在你的 App 中增强“旁白”体验
2020 年 5 月 19 日
“旁白”是帮助用户在不查看屏幕的情况下进行导航的核心部分。以本文为例:你可能在阅读这段文字,但如果你是一个使用“旁白”的开发者,你会听到这段文字和文章的其他部分,以及你可能需要了解的任何重要元素的口头描述。另外,如果你已经在《开发者》App 中打开了这篇文章,你还会听到 App 中的导航元素。
无论你个人是否使用“旁白”,以下几点可以帮助你进行换位思考,从而设计优秀的体验。
掌握 App 中的“辅助功能”元素
当用户在 iOS、iPadOS、watchOS 或 tvOS 上启用“旁白”时,它就会开始描述屏幕上所有的标签元素。为了决定阅读内容,“旁白”会寻找辅助功能元素(即视图中的单个或分组视觉元素),并判断用户是否可以与这些元素进行交互。“旁白”在描述一个元素时,也会在屏幕上通过在内容周围显示一个黑色矩形来突出它。
提示:在自己的设备上探索“旁白”
虽然《Xcode》为你提供了几种工具来测试你的 App 的辅助功能,但你可以通过在自己的 iPhone、iPad、Mac、Apple Watch 或 Apple TV 上进行测试来了解很多关于“旁白”的信息,以及各种 App 实现它的方式。你可以在《设置》App 或 Mac 上的“系统偏好设置”中启用“旁白”,如果你想轻松使用该功能,甚至可以启用基于硬件的辅助功能快捷键。
“旁白”还增加了一些特定的多点触控手势和轻点操作,以帮助用户浏览他们的设备。在屏幕上任何地方向右滑动将导航到视图中的下一个元素,而向左滑动将导航到上一个元素。每次“旁白”落在一个新的元素上时,它都会大声说出它的辅助功能标签和值等细节。如果该元素有任何提示或特征,它也会说出来。
用户也可以直接轻点视觉元素进行导航。如果它在辅助功能元素的范围内,“旁白”将聚焦到它身上。否则,“旁白”将发出“啵嘤”声。
默认情况下,所有标准的 UIKit 控件都是辅助功能元素。为了将自定义控件或视图标记为辅助功能元素,可以使用 isAccessibilityElement
:
var isAccessibilityElement: Bool get set
对辅助功能元素进行分组和分类
当通过滑动进行导航时,“旁白”会按照每个元素在屏幕上的出现顺序进行访问。这并不总是用户吸收信息最高效的方式:如果你的 App 有太多的辅助功能元素,用户可能需要很长的时间才能理解它。你应该尝试将你的辅助功能元素组合在一起,创建一个简化的层次结构。
当你对你的辅助功能元素进行分组时,“旁白”将整体描述它们,加快你 App 的导航速度。例如,你可能会对包含标题、文本和时间戳标签的视图进行分组,如《健康》App 的心率标题、心率数据和最新读数的时间。
这也有助于为使用“旁白”的用户提供上下文,就像在视觉界面中一样:通过将它们分组并把它们放在一起,让用户知道时间和文本与标题相关联,而不是三个不相关的项目。
添加自定操作
你可以为任何辅助功能元素指定自定操作,从而提供额外的功能。例如,如果你在没有启用“旁白”的情况下使用《邮件》,你可以点击收件箱内的邮件来查看,但你也可以向左或向右滑动单个信息来访问其他功能,如删除、标记或移动邮件。自定操作可以让使用“旁白”的用户以不同的方式访问这些相同的功能:当“旁白”聚焦于邮件元素时,它会说出“可用操作:上下轻扫来选择自定操作”的提示。当“旁白”说到你想要的操作时,你就可以轻点两下执行它。
有趣的事实:当你在你的 App 中实现了前导或尾随的表格视图滑动手势时,你会自动在你的项目中为这些按钮获得“旁白”操作。
当与分组元素相结合时,自定操作非常强大,可以帮助简化你的可导航层次结构。例如,如果你有一个视图作为辅助功能元素,其中有多个按钮作为子视图,你并不总是能够用“旁白”导航到这些按钮。虽然你可能很想将其分解成更小的元素,让按钮成为单独的焦点,但这可能会让一切变得很乱。
我们强烈建议使用“自定操作”来暴露这些按钮操作,让你保持元素的组织结构,同时仍然为使用“旁白”的用户提供完整的控制。当你仔细地对元素进行分组并添加自定操作时,就会创造出更好的整体导航体验,并会让你的 App 对那些依赖“旁白”的用户来说更加人性化。
要在你的辅助功能元素上设置一个 UIAccessibilityCustomAction
,你可以使用 accessibilityCustomActions
:
```swift
var accessibilityCustomActions: [UIAccessibilityCustomAction]? { get set }
```
提示布局变化
你的 App 可能会在视觉上改变布局,以指示某个操作或事件的结果。例如,在《快捷指令》App中,轻点“+”按钮会弹出帮助用户建立快捷指令的组件。对于使用“旁白”的用户,你可以使用“屏幕改变”或“布局改变”通知来引导他们聚焦到新出现的元素上。
最好只在你的界面有重大变化时才使用“布局改变”,因为过于频繁地引导关注会让用户在你的 App 中感到困惑,失去上下文信息。
要发布一个辅助功能通知,你可以在 UIAccessibility
上使用 post(notification:argument:)
:
```swift
static func post(notification: UIAccessibility.Notification,
argument: Any?)
```
接下来……
当你对你的 App 进行这些改进时,你不仅可以获得更好的“旁白”支持,还可以为我们的其他辅助技术(如“切换控制”和“全键盘控制”)铺好基础。所以,去探索吧,让你的 App 的辅助功能体验更加出色吧!因为,只有当技术赋予每个人力量时,它才是最强大的。