12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- //
- // KeyboardEventHandler.swift
- // flowy_infra_ui
- //
- // Created by Jaylen Bian on 7/17/21.
- //
- class KeyboardEventHandler: NSObject, FlutterStreamHandler {
- var isKeyboardShow: Bool = false
- var eventSink: FlutterEventSink?
- override init() {
- super.init()
- NotificationCenter.default.addObserver(
- self,
- selector: #selector(handleKeyboardWillShow),
- name: UIApplication.keyboardWillShowNotification,
- object: nil)
- NotificationCenter.default.addObserver(
- self,
- selector: #selector(handleKeyboardDidShow),
- name: UIApplication.keyboardDidShowNotification,
- object: nil)
- NotificationCenter.default.addObserver(
- self,
- selector: #selector(handleKeyboardWillHide),
- name: UIApplication.keyboardWillHideNotification,
- object: nil)
- NotificationCenter.default.addObserver(
- self,
- selector: #selector(handleKeyboardDidHide),
- name: UIApplication.keyboardDidHideNotification,
- object: nil)
- }
- func onListen(withArguments arguments: Any?, eventSink events: @escaping FlutterEventSink) -> FlutterError? {
- eventSink = events
- return nil
- }
- func onCancel(withArguments arguments: Any?) -> FlutterError? {
- eventSink = nil
- return nil
- }
- // MARK: Helper
- @objc
- private func handleKeyboardWillShow() {
- guard !isKeyboardShow else {
- return
- }
- isKeyboardShow = true
- eventSink?(NSNumber(booleanLiteral: true))
- }
- @objc
- private func handleKeyboardDidShow() {
- guard !isKeyboardShow else {
- return
- }
- isKeyboardShow = true
- eventSink?(NSNumber(booleanLiteral: true))
- }
- @objc
- private func handleKeyboardWillHide() {
- guard isKeyboardShow else {
- return
- }
- isKeyboardShow = false
- eventSink?(NSNumber(booleanLiteral: false))
- }
- @objc
- private func handleKeyboardDidHide() {
- guard isKeyboardShow else {
- return
- }
- isKeyboardShow = false
- eventSink?(NSNumber(booleanLiteral: false))
- }
- }
|