【问题标题】:RN accessibility on Android - order of how TalkBack reads through ViewAndroid 上的 RN 可访问性 - TalkBack 如何通过 View 读取的顺序
【发布时间】:2019-01-09 15:19:41
【问题描述】:

我正在尝试使用 RN 中的可访问性功能并且有几个问题。如何在不禁用 TalkBack 的情况下摆脱 UI 中的绿色框。第二个是 - 如何强制屏幕阅读器读取由多个组件组成的视图元素的顺序?目前,我根据某些参数操作状态并将其传递给属性:accessibilityLabel、accessibilityHint、importantForAccessibility 来完成此操作。有更好的方法吗? 这是一个例子:


    this.setState(function(){
       if(<some condition>){
         return{
          accessibilityLabel: "press right to move to other item",
          importantForAccessibility: "yes"
         }
       }else{
          return {
            accessibilityLabel: "something else",
            importantForAccessibility: "no-hide-descendants"
          }
       }
     )}

然后


render(){
    return(
      <View 
       accessibilityLabel= 
       {this.state.accessibilityLabel}
       importantForAccessibility= 
       {this.state.importantForAccessibility}
      />
    )
}

【问题讨论】:

    标签: javascript android react-native accessibility talkback


    【解决方案1】:

    如何在不禁用 TalkBack 的情况下消除 UI 中的绿框。

    绿色框是 Talkback 的一部分。这是一个重要的功能,它可以清楚地显示屏幕阅读器的光标在哪里;可用于各种残疾,包括视力不全、阅读障碍、记忆障碍和注意力障碍。

    据我所知,作为用户,它无法关闭。 (我在 Android 8.0 上有 Android Accessibility Suite 版本 7.2)。不过,其他平台上的一些屏幕阅读器会提供用户偏好来自定义外观。

    作为开发人员,您也不能将其关闭 - 它是 Talkback 的一部分,而不是应用程序。这是一件好事;它是用户的辅助技术,而不是开发人员的。即使开发人员可以关闭屏幕阅读器的视觉光标,他们也不应该这样做。 (这就像使用 * { cursor: none !important; } 设置网页样式一样 - 鼠标用户不会为此感谢您!)

    如何强制屏幕阅读器阅读由多个组件组成的视图元素的顺序?

    在使用网络浏览器时,屏幕阅读器按 DOM 顺序阅读网页,因此适用于网页的一般原则是使视觉顺序与 DOM 顺序匹配。 (另外:这对于有视力的键盘用户也很重要,因为与视觉顺序不同的 Tab 键顺序可能会非常混乱。)

    我对 React-native 应用程序不太熟悉,但我想类似的事情也适用。您应该以有意义的顺序构建应用程序的内容和控件。如果应用程序有多个区域,请以允许用户跳到特定区域的方式标记它们(使用标题、ARIA 地标角色或可能的其他分组容器)。请注意,屏幕阅读器用户不一定是盲人,因此视觉顺序和 DOM 顺序很重要。

    有必要澄清一下您是否是指强制执行整个应用程序的“阅读顺序”(例如,当用户浏览应用程序 UI 只是为了查看其中的内容时);与管理焦点以响应特定小部件(如日期选择器)内的特定用户操作。由于 React-native 使用 JS,我建议阅读 ARIA - Managing Focus 看看这是否适用于您的情况。

    【讨论】:

    • 感谢您非常详细的解释,但它并没有直接解决我面临的挑战。我认为在 RN 文档中关注 UIManager 的解决方案或多或少是可行的。它在 Firestick 上运行良好,但我仍然不知道如何在 TalkBack 开启时在 Android 8 上获取箭头按钮的 KeyEvents。我是android新手,所以继续学习。不过,感谢您的宝贵时间。
    • 那东西不在你的问题里。您最初询问了阅读顺序,但您没有表明您使用键盘进行操作。与大多数 Windows 屏幕阅读器一样,Talkback 使用箭头键以用户选择的粒度在阅读顺序中移动。但是,此所需的修饰键的确切组合取决于用户的配置。 Talkback 提供 2 个预定义的键盘映射,并允许用户自定义这些。见support.google.com/accessibility/android/answer/6110948
    • 您可能无法以编程方式访问 Talkback 键盘命令(除非 RN 或 Android 提供了 API,我真的不知道)。例如,Web 浏览器中的 JS 根本无法知道是否正在使用 Talkback。使用 Talkback 的箭头键功能来推进阅读位置需要修改键。我不确定自己按箭头键时会得到什么。在 WIndows 屏幕阅读器上,用户可能需要激活特殊的“直通”模式才能将原始按键发送到应用程序,但不确定 Talkback 是否具有等效模式。
    • 感谢您帮助我。看来我需要向 Android 开发人员提出这个问题。在我发布问题时,我阅读了 React-Native Docs 并且仅限于属性。在我发布评论时 - 回应 - 我已经挖得更深了。目前我正在浏览 Android Development Docs,因为我似乎需要更深入地了解。
    猜你喜欢
    • 1970-01-01
    • 2019-06-22
    • 1970-01-01
    • 2015-10-19
    • 2018-04-29
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多