Skip to content

feat: fix show soft input on focus behavior#35244

Closed
zzz0108 wants to merge 1 commit intofacebook:mainfrom
zzz0108:fix/show-soft-input-on-focus-behavior-ios
Closed

feat: fix show soft input on focus behavior#35244
zzz0108 wants to merge 1 commit intofacebook:mainfrom
zzz0108:fix/show-soft-input-on-focus-behavior-ios

Conversation

@zzz0108
Copy link
Contributor

@zzz0108 zzz0108 commented Nov 7, 2022

Summary

The showSoftInputOnFocus of TextInput is not working properly. When we set showSoftInputOnFocus to false and subsequently to true, it fails to open the keyboard, we have to re-focus on the input in order for the keyboard to show. It's expected that the keyboard will be opened as soon as showSoftInputOnFocus becomes true. This happens on iOS only.
Reference in React Native doc: https://reactnative.dev/docs/textinput#showsoftinputonfocus.

Changelog

[iOS] [Fixed] - Fix issue where keyboard does not open when TextInput showSoftInputOnFocus changes from false to true

Test Plan

I've made a clean create-react-native-app repo to demonstrate this https://github.com/christianwen/reduced-rn-app.
Here's the steps:

  1. Clone https://github.com/christianwen/reduced-rn-app
  2. Run yarn install
  3. Run cd ios, then pod install, then cd ..
  4. Run yarn ios
  5. See the text input on the top of the screen, it can be observed that the keyboard does not open because showSoftInputOnFocus is false, 3 seconds later it becomes true due to a setTimeout that is used

Screenshot 2022-11-07 at 23 39 50

Screen.Recording.2022-11-07.at.23.42.11.mov

However, it can be seen that the keyboard does not open even though showSoftInputOnFocus becomes true
6. Now add the change in this PR to Libraries/Text/TextInput/RCTBaseTextInputView.m
7. Run yarn ios again
8. Now verify the step 5 again, the keyboard will open automatically when showSoftInputOnFocus becomes true

Simulator.Screen.Recording.-.iPhone.14.-.2022-11-07.at.23.32.01.mp4

The reason why I created a fresh RN repo instead of using rn-tester app is because the showSoftInputOnFocus example is not working in rn-tester app for some reasons (it shows the keyboard even though showSoftInputOnFocus is false in the example).

Regarding the code, it's similar to the fix for keyboardType in 8baaacb.

Screenshot 2022-11-07 at 23 36 41

@analysis-bot
Copy link

Platform Engine Arch Size (bytes) Diff
android hermes arm64-v8a 6,995,344 -70,833
android hermes armeabi-v7a 6,371,882 -66,679
android hermes x86 7,408,031 -73,464
android hermes x86_64 7,272,040 -68,849
android jsc arm64-v8a 8,861,159 -70,836
android jsc armeabi-v7a 7,599,671 -66,668
android jsc x86 8,918,904 -73,462
android jsc x86_64 9,402,268 -68,853

Base commit: 6152763
Branch: main

@analysis-bot
Copy link

Platform Engine Arch Size (bytes) Diff
ios - universal n/a --

Base commit: 6152763
Branch: main

@pull-bot
Copy link

pull-bot commented Nov 7, 2022

PR build artifact for 42472db is ready.
To use, download tarball from "Artifacts" tab in this CircleCI job then run yarn add <path to tarball> in your React Native project.

@facebook-github-bot
Copy link
Contributor

@jacdebug has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.

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

Labels

Bug CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. Platform: iOS iOS applications.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants