Specify keyboard focus separately from Screen Reader focus

This issue has been created since 2022-09-20.

Description

On Android keyboard focus and accessibility focus are handled separately at the system level. Often these match, as many accessibility services use the “focusable” property (which informs keyboard focus), to also inform them where to focus. In API 28 however, Android added the setScreenReaderFocusable property to View (https://developer.android.com/reference/android/view/View#setScreenReaderFocusable(boolean)) which allows you to flag a view as being focusable only for screen readers, without making that same view focusable by keyboards.

This is useful since screen readers often want to focus on views that are content only, but not actionable (so their users can hear the content), but focusing on these content elements is not useful for keyboard navigation users, who only need to be able to move between interactive elements.

Right now in React Native, the accessible prop maps to focusable on Android, making the element focusable by both screen readers and keyboard users.

There are a few different approaches we could take here. We could surface a new prop called screenReaderFocusable, that sets focusable to false but screenReaderFocusable to true, we could adjust the accessible prop to only set screenReaderFocusable to true, and add a new prop for keyboardFocusable which sets focusable to true, or we could have the accessible prop contextually set either focusable (if the element is interactive by having a click handler) or screenreaderFocusable (if it’s content only).

Version

0.66

Output of npx react-native info

see description

Steps to reproduce

see description

Snack, code example, screenshot, or link to a repository

see description

More Details About Repo
Owner Name facebook
Repo Name react-native
Full Name facebook/react-native
Language JavaScript
Created Date 2015-01-09
Updated Date 2022-10-07
Star Count 105180
Watcher Count 3671
Fork Count 22481
Issue Count 2230

YOU MAY BE INTERESTED

Issue Title Created Date Comment Count Updated Date
External links not in alphabetical order 1 2022-01-25 2022-07-30
Placement group 10 servers limit 11 2022-04-03 2022-10-04
Cannot read properties of null (reading 'match') 0 2022-05-15 2022-09-02
Windows token script generating invalid json 1 2022-08-24 2022-09-24
BNCI2014009 scaling issues? 1 2022-03-04 2022-08-20
Can't disable cooldown finish effect 1 2021-01-27 2022-09-10
OmniCC not working on main Buffs Frame 3 2021-02-08 2022-10-04
StickySidebar not updating after update html content inside 2 2021-06-24 2022-07-31
Enable level-relative encounters 0 2021-08-30 2022-01-18
full interaction in group specific term does not work 1 2021-04-05 2022-09-26
IOs15 never change beacon status to “out” 2 2021-10-05 2022-09-26
Different key theme for each keyboard type 1 2022-04-02 2022-09-12
作者已经不维护了,一般使用没什么大问题,有问题的可以试试BRV,作者一直在维护,有问必答 11 2022-01-21 2022-10-02
I am using magento 2.3.5. May I use this airbrake for this magento version? 0 2021-01-27 2022-08-29
Plot connection matrix 0 2018-01-05 2022-09-23
[ACL] Process DB Migration in setDbOffset 1 2021-12-25 2022-10-03
Plugin Tinker not work 10 2021-06-18 2022-09-07
*-v2.0.2-linux-arm64 seems to be corrupt -- Exec format error 2 2021-10-25 2022-09-25
Shopify CAPI 1 2021-05-07 2022-01-04
Restructure the docs to a multi-page documentation site 2 2022-07-04 2022-09-26
Can't use Laravel Sail in template repository 3 2021-06-16 2022-08-29
Conv 和 AvgPool 的 API 行为不一致 5 2021-01-06 2022-09-03
Zero (phantom, unvoiced) word support. 22 2015-11-29 2022-09-26
Woocommerce CSV import of Upsell SKU that does not exist, gives a fatal error on product page 2 2022-04-29 2022-09-06
Downloadable product limitations issue 5 2022-04-28 2022-09-03
Active filters (widget) issue 3 2022-04-28 2022-09-05
Slow order/subscription search 6 2022-04-28 2022-10-04
Invoke using scalene in code 1 2022-09-13 2022-09-26
MariaDB image has no arm support. 4 2021-04-27 2022-09-26
grid err on windows 11 0 2022-07-14 2022-08-29
Gradle `quarkusBuild` fails with `ZipFile invalid LOC header` in `SmallRyeOpenApiProcessor` 4 2022-05-25 2022-09-13
CloudBuild (GCP) Failed to authenticate with registry when using Jib 16 2022-05-25 2022-10-01
Ghost Docker image 5.9.4 db connection issue 1 2022-08-17 2022-09-22
Test Results are printing in terminal instead of file 11 2021-10-06 2022-09-29
CDbCriteria::addInCondition() return null on non empty array 0 2012-02-15 2022-10-04
Change the stream source that will be recorded based on mode 3 2022-03-09 2022-10-05
feat: allow QueryJob.result() to be called on a dryRun query 0 2021-10-08 2022-10-04
how to solve the problem of duplicated requests on Linux with version 1.3.0 0 2022-01-06 2022-10-03
Getting insufficient balance error during the upgrade in blockchain. 2 2021-07-09 2022-10-01
Cryptical error message when no product image type has been defined 1 2022-07-22 2022-08-24
Bump browserslist from 4.13.0 to 4.16.6 0 2021-05-26 2022-09-22
Add save and load behavior to multi table QualityReport 0 2022-08-12 2022-09-24
Add get score methods for single table Quality Report 0 2022-08-12 2022-09-24
Promise#finally may return promises 2 2022-02-04 2022-09-04
Trouble installing under Ubuntu and Windows 4 2018-06-22 2022-08-09
Vue 3 compatibility 22 2020-01-16 2022-01-14
Highlight label for attribute when identifying duplicates 0 2021-08-17 2022-09-24
v2.6.4 breaks ruby gem cli after gem update shopify-cli in win7 1 2021-10-20 2022-10-04
Adorner layer does not display anything for MAUI+WinUI 2 2022-06-15 2022-10-04
bug(MatInputHarness): Numeric values are not supported on <input type="number" /> 2 2021-11-04 2022-08-29