iOS无障碍化

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

内容简介:在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


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

查看所有标签

猜你喜欢:

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

Coding the Matrix

Coding the Matrix

Philip N. Klein / Newtonian Press / 2013-7-26 / $35.00

An engaging introduction to vectors and matrices and the algorithms that operate on them, intended for the student who knows how to program. Mathematical concepts and computational problems are motiva......一起来看看 《Coding the Matrix》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

SHA 加密
SHA 加密

SHA 加密工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试