Skip to content

fix: KeyboardInput - dismissKeyboard without AppDelegate.window - #4053

Open
AlicanAkyol wants to merge 1 commit into
wix:masterfrom
AlicanAkyol:fix/keyboard-input-key-window
Open

AlicanAkyol wants to merge 1 commit into
wix:masterfrom
AlicanAkyol:fix/keyboard-input-key-window

Conversation

@AlicanAkyol

Copy link
Copy Markdown

dismissKeyboard in RCTCustomInputControllerTemp.m looks for the first responder starting from [UIApplication sharedApplication].delegate.window.

With the UIKit scene life cycle the window belongs to the scene delegate and the AppDelegate has no window property. That is the React Native 0.88 template, and Expo SDK 58 (SDK 57 with enableSceneSupport). Apple requires the scene life cycle for apps built with the iOS 27 SDK (TN3187), and App Store uploads need that SDK from April 2027. In such an app, dismissKeyboard throws:

-[AppDelegate window]: unrecognized selector sent to instance

This starts the search from RCTKeyWindow() (<React/RCTUtils.h>), which returns the same window on the classic life cycle and the scene's key window otherwise. It's the only delegate.window use I found in the package.

Testing: I reproduced this crash pattern, and confirmed the same fix, with two other libraries on a fresh React Native 0.88.0-rc.4 app in the iOS simulator (react-native-blob-util#498, invertase/react-native-google-mobile-ads#911, the latter now approved). I have not run the ui-lib demo app.

Found while adding a UIScene check to NativeKeel, a React Native health-check CLI I maintain.

dismissKeyboard searched for the first responder from
[UIApplication sharedApplication].delegate.window, which apps on the UIKit
scene life cycle (React Native 0.88 template, Expo SDK 58) do not have, so
it threw '-[AppDelegate window]: unrecognized selector'. Start from
RCTKeyWindow() instead.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant