【问题标题】:Incorrect accessibility focus order for nested elements in React NativeReact Native 中嵌套元素的可访问性焦点顺序不正确
【发布时间】:2020-09-16 20:13:07
【问题描述】:

我在一个混合匹配的应用程序中工作,我们将 React Native 组件用于几个模块。在本例中,我有一个表格视图,我们在其中的几个单元格中添加了 RN 组件。

我能够为这些 React Native 组件中的嵌套元素启用可访问性,但在 UITableView 中添加时焦点顺序似乎不正确。

视图层次结构如下:

 <E0>
    <E1 accessible={true}>
       <E11 accessible={true}>
       <E12 accessible={true}>...
    <E2 accessible={true}>
       <E21 accessible={true}>
       <E22 accessible={true}>...

我希望焦点顺序是 E1、E11、E12、E2、E21、E22

但它是按顺序宣布的 E1、E2、E11、E12、E21、E22 即,父元素,然后是子元素

在 iOS 中,我们有 accessibilityElements 属性来设置顺序。有没有办法像在 React Native 中那样设置焦点顺序,或者有没有其他方法可以实现?

P.S.:当我在视图控制器中显示特定组件时,相同的组件按预期工作(即以正确的顺序宣布画外音)。

任何及时的帮助/有用的建议都将不胜感激,因为我已经在这个问题上花费了超过几天的时间。

【问题讨论】:

  • 您找到解决方案了吗?
  • 很遗憾,没有。

标签: react-native accessibility react-native-ios


【解决方案1】:

假设启用了屏幕阅读器的人不经常使用他们的视觉效果,您可以在元素周围移动,让屏幕阅读器以正确的顺序阅读它们。

在您的情况下,这意味着 如果启用了屏幕阅读器,然后将 marginTop (例如 50)添加到 E2

这是一个示例:左侧是启用屏幕阅读器时。

检查屏幕阅读器是否启用可以通过:AccessibilityInfo

免责声明:我知道这是一个相当可笑的答案,因为它只是避免问题而不是解决问题,但我还是发布了它,因为它确实解决了与您类似的问题,而且似乎没有解决方案来自 React Native。

【讨论】: