diff --git a/ios/extensions/Notification.swift b/ios/extensions/Notification.swift index 17f0b88edf..b091760e0c 100644 --- a/ios/extensions/Notification.swift +++ b/ios/extensions/Notification.swift @@ -14,6 +14,11 @@ extension Notification { return (duration, keyboardFrame) } + + var canBeSafelyIgnored: Bool { + UIResponder.isKeyboardPreloading + || (userInfo?[UIResponder.keyboardIsLocalUserInfoKey] as? Bool) == false + } } extension Notification.Name { diff --git a/ios/observers/movement/observer/KeyboardMovementObserver+Listeners.swift b/ios/observers/movement/observer/KeyboardMovementObserver+Listeners.swift index 464eec73bb..4e21756890 100644 --- a/ios/observers/movement/observer/KeyboardMovementObserver+Listeners.swift +++ b/ios/observers/movement/observer/KeyboardMovementObserver+Listeners.swift @@ -7,7 +7,7 @@ extension KeyboardMovementObserver { @objc func keyboardWillAppear(_ notification: Notification) { - guard !UIResponder.isKeyboardPreloading else { return } + guard !notification.canBeSafelyIgnored else { return } let (duration, frame) = notification.keyboardMetaData() if let keyboardFrame = frame { @@ -34,7 +34,7 @@ extension KeyboardMovementObserver { } @objc func keyboardWillDisappear(_ notification: Notification) { - guard !UIResponder.isKeyboardPreloading else { return } + guard !notification.canBeSafelyIgnored else { return } let (duration, _) = notification.keyboardMetaData() tag = UIResponder.current.reactViewTag self.notification = notification @@ -55,7 +55,7 @@ extension KeyboardMovementObserver { } @objc func keyboardDidAppear(_ notification: Notification) { - guard !UIResponder.isKeyboardPreloading else { return } + guard !notification.canBeSafelyIgnored else { return } let (duration, frame) = notification.keyboardMetaData() if let keyboardFrame = frame { @@ -82,7 +82,7 @@ extension KeyboardMovementObserver { } @objc func keyboardDidDisappear(_ notification: Notification) { - guard !UIResponder.isKeyboardPreloading else { return } + guard !notification.canBeSafelyIgnored else { return } let (duration, _) = notification.keyboardMetaData() tag = UIResponder.current.reactViewTag