Description
The TextInput onKeyPress event handler receives an unexpected Backspace event when multiline is true. The exact behavior varies between iOS 15 and iOS 16:
- iOS 15: The
Backspace event is received after value is reset to an empty string
- iOS 16: The
Backspace event is received on EVERY change AND when value is reset to an empty string
This has been tested on iOS 15.5, 16.4, and 16.5.
Possibly related: #34891
React Native Version
0.71.11
Output of npx react-native info
System:
OS: macOS 13.4
CPU: (16) x64 Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz
Memory: 27.38 GB / 64.00 GB
Shell: 5.9 - /usr/local/bin/zsh
Binaries:
Node: 18.16.0 - ~/.asdf/installs/nodejs/18.16.0/bin/node
Yarn: 1.22.19 - /usr/local/bin/yarn
npm: 9.6.6 - ~/.asdf/plugins/nodejs/shims/npm
Watchman: Not Found
Managers:
CocoaPods: 1.12.1 - /Users/jeff/.asdf/shims/pod
SDKs:
iOS SDK:
Platforms: DriverKit 22.4, iOS 16.4, macOS 13.3, tvOS 16.4, watchOS 9.4
Android SDK: Not Found
IDEs:
Android Studio: 2022.2 AI-222.4459.24.2221.10121639
Xcode: 14.3.1/14E300c - /usr/bin/xcodebuild
Languages:
Java: 11.0.13 - /Users/jeff/.asdf/shims/javac
npmPackages:
@react-native-community/cli: Not Found
react: 18.2.0 => 18.2.0
react-native: 0.71.11 => 0.71.11
react-native-macos: Not Found
npmGlobalPackages:
react-native: Not Found
Steps to reproduce
- Add a
<TextInput multiline /> component and log all events received by onKeyPress
- Type into the input
- Observe that an event with
nativeEvent.key set to 'Backspace' is received after every onKeyPress event is received for the typed key
Snack, code example, screenshot, or link to a repository
https://github.com/jbrowning/RN071TextInputBackspace
Description
The
TextInputonKeyPressevent handler receives an unexpectedBackspaceevent whenmultilineistrue. The exact behavior varies between iOS 15 and iOS 16:Backspaceevent is received aftervalueis reset to an empty stringBackspaceevent is received on EVERY change AND whenvalueis reset to an empty stringThis has been tested on iOS 15.5, 16.4, and 16.5.
Possibly related: #34891
React Native Version
0.71.11
Output of
npx react-native infoSystem:
OS: macOS 13.4
CPU: (16) x64 Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz
Memory: 27.38 GB / 64.00 GB
Shell: 5.9 - /usr/local/bin/zsh
Binaries:
Node: 18.16.0 - ~/.asdf/installs/nodejs/18.16.0/bin/node
Yarn: 1.22.19 - /usr/local/bin/yarn
npm: 9.6.6 - ~/.asdf/plugins/nodejs/shims/npm
Watchman: Not Found
Managers:
CocoaPods: 1.12.1 - /Users/jeff/.asdf/shims/pod
SDKs:
iOS SDK:
Platforms: DriverKit 22.4, iOS 16.4, macOS 13.3, tvOS 16.4, watchOS 9.4
Android SDK: Not Found
IDEs:
Android Studio: 2022.2 AI-222.4459.24.2221.10121639
Xcode: 14.3.1/14E300c - /usr/bin/xcodebuild
Languages:
Java: 11.0.13 - /Users/jeff/.asdf/shims/javac
npmPackages:
@react-native-community/cli: Not Found
react: 18.2.0 => 18.2.0
react-native: 0.71.11 => 0.71.11
react-native-macos: Not Found
npmGlobalPackages:
react-native: Not Found
Steps to reproduce
<TextInput multiline />component and log all events received byonKeyPressnativeEvent.keyset to'Backspace'is received after everyonKeyPressevent is received for the typed keySnack, code example, screenshot, or link to a repository
https://github.com/jbrowning/RN071TextInputBackspace