iOS无障碍化

栏目: IOS · 发布时间: 5年前

内容简介:在iOS平台下,我们讲无障碍化通常是指对系统功能——“旁白”的支持。UIKit组件对“旁白”的支持比较到位,很多时候开发者并不需要专门做无障碍化即可做到基本兼容,偶尔遇到一些问题也是比较容易处理的。建议开发者可以先试用一下旁白功能,了解盲人用户的使用方式,再进一步考虑自己的app应当如何适配。相关操作可以参考官方文章

简介

在iOS平台下,我们讲无障碍化通常是指对系统功能——“旁白”的支持。

UIKit组件对“旁白”的支持比较到位,很多时候开发者并不需要专门做无障碍化即可做到基本兼容,偶尔遇到一些问题也是比较容易处理的。

建议开发者可以先试用一下旁白功能,了解盲人用户的使用方式,再进一步考虑自己的app应当如何适配。相关操作可以参考官方文章 学习“旁白”手势

入门

无障碍化相关的属性都是加在NSObject上的,也就是说,页面上的每个元素都具有这些属性,包括UIWindow。

这里只介绍几个核心属性:

  • isAccessibilityElement
  • accessibilityLabel
  • accessibilityElements

VoiceOver的基本逻辑是,递归遍历当前页面的所有元素。如果一个元素 isAccessibilityElement == YES ,那么读出这个元素的 accessibilityLabel 等内容。如果一个元素 isAccessibilityElement == NO ,那么按照它的accessibilityElements内容遍历其子元素,如果没有设accessibilityElements,按照当前系统语言的一般顺序(汉语和英语都是从左到右从上到下)。

那么我们要做的也就基本清楚了:

  • 如果一个元素需要被直接读出来,isAccessibilityElement设为YES,accessibilityLabel写入合适的文本
  • 如果一个元素不要读出来,但是它的子元素需要读出来,需要把当前元素isAccessibilityElement设为NO,需要读出来的子元素参考前一条
  • 如果需要控制VoiceOver遍历的顺序,设置accessibilityElements

由于系统控件是默认处理好的,而且VoiceOver的默认阅读顺序通常也没什么大问题,因此需要开发者专门去兼容的场景并不会很多。平均算下来每个页面加几行代码就差不多了。

盲人毕竟是小众群体,大部分应用还是没有做好无障碍化。如果一个应用主要场景都能够做到以上几点,在无障碍化上就已经很优秀了。

一些具体问题

1. 手动聚焦

有时弹提示时应当把VoiceOver焦点聚焦到弹出的view

具体参考: iOS change accessibility focus

2. 半透明蒙层

也是类似于弹框提示时,弹框下面通常会有个半透明蒙层,蒙层下的内容不可点击。

VoiceOver此时的表现会很差,能够读到蒙层下的内容但不可点击。

此时需要对蒙层设置 accessibilityViewIsModal 属性,会使蒙层的同级view不响应VoiceOver,而蒙层的子view可响应。

友情提示:这个属性对Window同样有效。

参考:[Prevent VoiceOver revealing views that are beneath a larger transparent view

]( https://stackoverflow.com/que...

3. hidden元素

有时把某个view设成hidden的时候,UI上已经不展示了,但是VoiceOver仍然可以读到。

此时可以使用 UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, nil) 强制更新VoiceOver的表现。

参考: VoiceOver controls are selectable when hidden


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

React开发实战

React开发实战

[美] Cássio de Sousa Antonio / 杜伟、柴晓伟、涂曙光 / 清华大学出版社 / 2017-3-1 / 58.00 元

介绍如何成功构建日益复杂的前端应用程序与接口,深入分析 React库,并详述React生态系统中的其他工具与库,从而指导你创建完整的复杂应用程序。 你将全面学习React的用法以及React生态系统中的其他工具和库(如React Router和Flux 架构),并了解采用组合方式创建接口的佳实践。本书简明扼要地讲解每个主题,并呈现助你高效完成工作的细节。书中严谨深刻地讲述React中重要的功......一起来看看 《React开发实战》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

html转js在线工具
html转js在线工具

html转js在线工具