javascript - Android 上的 RN 可访问性 - TalkBack 读取 View 的顺序

标签 javascript android react-native accessibility talkback

我正在尝试使用 RN 中的辅助功能,但几乎没有问题。如何在不禁用 TalkBack 的情况下摆脱 UI 中的绿色框。第二个是 - 如何强制屏幕阅读器阅读由多个组件组成的 View 元素的顺序?目前,我根据某些参数操纵状态并将其传递给属性: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}
      />
    )
}

最佳答案

How would I get rid of green box in UI, without disabling TalkBack.

绿框是 Talkback 的一部分。这是一个重要的功能,可以清楚地显示屏幕阅读器的光标所在的位置;对各种残疾有用,包括部分视力、阅读障碍、内存障碍和注意力障碍。

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

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

how to enforce the order in which screen reader reads through the elements of view that is composed from several components?

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

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

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

关于javascript - Android 上的 RN 可访问性 - TalkBack 读取 View 的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54113259/

相关文章:

javascript - 在 angularMaterialTable 中使用 *ngIf

javascript - 第一次打开时 polymer 纸对话框未居中

java - 如何使用Parcelable?

android - 如何将数据绑定(bind)到 android 4.0 中的编辑文本和微调器

react-native - 静态图像资源的导入/未解析

javascript - 在 typescript 和 Angular 中对父项和子项进行排序

javascript - 使用 AJAX 发送单选按钮值以获取 PHP 文件以从 MySQL 检索数据

android - 如何在 Android 客户端中使用 Keycloak OpenId 进行 oAuth

javascript - 为什么当 prop 更改时我的组件会重新渲染?

javascript - react native Firebase图像上传错误404