Skip to content

Commit

Permalink
[RNKC-041] - correct subscribe/unsubscribe mechanism for keyboard eve…
Browse files Browse the repository at this point in the history
…nts on iOS (#18)
  • Loading branch information
kirillzyusko authored May 12, 2022
1 parent e3dc7c8 commit 026a855
Showing 1 changed file with 14 additions and 10 deletions.
24 changes: 14 additions & 10 deletions ios/KeyboardControllerViewManager.swift
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,20 @@ class KeyboardControllerView : UIView {
}

override func willMove(toWindow newWindow: UIWindow?) {
super.willMove(toWindow: newWindow)
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillDisappear), name: UIResponder.keyboardWillHideNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillAppear), name: UIResponder.keyboardWillShowNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(keyboardDidAppear), name: UIResponder.keyboardDidShowNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(keyboardDidDisappear), name: UIResponder.keyboardDidHideNotification, object: nil)
if (newWindow == nil) {
// Will be removed from a window
NotificationCenter.default.removeObserver(self)
}
}

override func didMoveToWindow() {
if (self.window != nil) {
// Added to a window
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillDisappear), name: UIResponder.keyboardWillHideNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillAppear), name: UIResponder.keyboardWillShowNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(keyboardDidAppear), name: UIResponder.keyboardDidShowNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(keyboardDidDisappear), name: UIResponder.keyboardDidHideNotification, object: nil)
}
}

@objc func keyboardWillAppear(_ notification: Notification) {
Expand Down Expand Up @@ -66,9 +75,4 @@ class KeyboardControllerView : UIView {
data["height"] = 0
KeyboardController.shared?.sendEvent(withName: "KeyboardController::keyboardDidHide", body: data)
}

override func willRemoveSubview(_ subview: UIView) {
super.willRemoveSubview(subview)
NotificationCenter.default.removeObserver(self) // TODO: correct place?
}
}

0 comments on commit 026a855

Please sign in to comment.