A framework for building native applications using React
Allow text inputs to handle native requestFocus calls (#48547)
Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/48547 For some unknown reason, we have been swallowing [`requestFocus`](https://developer.android.com/reference/android/view/View#requestFocus(int) calls since `TextInput` is a controlled component - meaning you can control this components value and focus state from JS. This decision was originally made pre 2015 and I cannot find the reason why I do not think this makes sense. We can still request focus from JS, while allowing the OS to request focus as well in certain cases and we would still be controlling this text input. This is breaking keyboard navigation. Pressing tab or arrow keys will no-op if the next destination is a `TextInput`. This is because Android will call `requestFocus` from [here](https://cs.android.com/android/platform/superproject/main/+/main:frameworks/base/core/java/android/view/ViewRootImpl.java;l=7868?q=performFocusNavigation) when handling key events. Notably, Explore By Touch (TalkBack) swiping gestures WOULD focus `TextInputs` since they go through `ExploreByTouchHelper` methods which we override to call the proper `requestFocusInternal()` method. **In this diff**: I move the logic in `requestFocusInternal()` into `requestFocus`. Changelog: [Android] [Fixed] - TextInputs can now receive focus via external keyboard Reviewed By: NickGerleman Differential Revision: D67953398 fbshipit-source-id: 506006769a7c8a63f0a9b7ce27cfbe8578777790
J
Joe Vilches committed
3420eb87b01f42092c1691a1f6544f20d244cc60
Parent: 0f1d470
Committed by Facebook GitHub Bot <[email protected]>
on 1/15/2025, 12:31:52 AM