无障碍用户体验(Accessible User Experience,AUX)是指为身体有缺陷、认知能力受限或者年龄较大等群体而设计的应用程序接口,让他们能够方便地使用应用程序。在移动设备上,无障碍功能对于视障人士、听障人士以及其他一些使用上有困难的用户尤为重要。本文将介绍在 iOS 上如何实现无障碍用户体验。
VoiceOver
VoiceOver 是 iOS 中自带的无障碍功能,它可以为用户提供屏幕朗读和触摸控制等功能。VoiceOver 大量依赖于每个应用的页面和控件信息,因此开发者需要给每个元素分配可访问性标签和特殊属性。
可访问性标签
可访问性标签是 VoiceOver 用来标识应用程序页面和控件的名称。在默认情况下,VoiceOver 会使用元素的可读性文本。但是当产生二义性时(例如,有多个按钮文本相同),开发者应使用 accessibilityLabel
属性。
button.accessibilityLabel = "发送"
特殊属性
开发者可以使用以下几个属性来扩展组件的可访问性:
accessibilityHint
:提供额外的语音提示信息;accessibilityTraits
:描绘元素角色和用途;accessibilityValue
:提供元素的值;isAccessibilityElement
:确定元素是否可以被 VoiceOver 封装。
button.accessibilityHint = "点击发送消息" button.accessibilityTraits = .button button.accessibilityValue = "Hello, world!" button.isAccessibilityElement = true
嵌套元素
在许多情况下,开发者需要向某个更大的控件中添加子元素。对于这种情况,使用 accessibilityElements
属性包含相关的子元素。例如一个表格:
let table: UITableView = ... let label: UILabel = ... table.accessibilityElements = [label] + (0..<table.numberOfRowsInSection(0)).map { return table.cellForRow(at: IndexPath(row: $0, section: 0)) }
UIAccessibility
UIAccessibility 提供了一些常用 API,用于改进应用程序的可访问性。
UIAccessibilityPostNotification
UiAccessibilityPostNotification 可用于显示语音和震动提示信息。以下代码显示了如何在程序启动时短暂地震动一下:
UIAccessibility.post(notification: .announcement, argument: "程序已经启动") UIAccessibility.post(notification: .announcement, argument: "程序已经启动", completionHandler: { // your completion handler code here })
UIAccessibilityCustomRotor
UIAccessibilityCustomRotor 可以使 VoiceOver 用户更容易地找到某个特定类型的内容(例如标题)。如果您的应用程序包含许多这样的元素,则可能会很有用。以下是如何创建一个 rotor:
let customRotor = UIAccessibilityCustomRotor(name: "Section Titles", itemSearch: { predicate in return // your code to find section titles })
UIAccessibilityElement
UIAccessibilityElement 可以用于创建更复杂的可访问组件,例如表示一个复杂视图的元素。
let view = MyCustomView() let element = UIAccessibilityElement(accessibilityContainer: view) element.accessibilityLabel = "Awesome view" element.accessibilityTraits = .button element.accessibilityValue = "\(view.value)" view.accessibilityElements = [element]
AXEnhancements
AXEnhancements 是一个开源的库,它提供了许多界面元素和控件,以便改善应用程序的无障碍性。以下是 AXEnhancements 提供的一些例子:
AXSwitch
AXSwitch 是一个更多的自定义感觉的开关控件,它不使用 iOS 自带的 UISwitch。AXSwitch 接受以下选项:
let switch = AXSwitch(delegate: self, onTintColor: UIColor.red, offTintColor: UIColor.lightGray, backgroundColor: UIColor.white, thumbTintColor: UIColor.white, cornerRadius: 16)
AXRatingView
AXRatingView 是一个显示评级的视图,它可以显示滑动或静态模式。AXRatingView 接受以下选项:
let ratingView = AXRatingView(delegate: self, range: 1...5, initialValue: 3, size: CGSize(width: 30, height: 30), space: 10, emptyImage: UIImage(named: "emptyStar"), fullImage: UIImage(named: "fullStar"))
总结
在本文中,我们已经介绍了如何在 iOS 应用程序中实现无障碍用户体验。您应该了解到 VoiceOver 和 UIAccessibility 以及 AXEnhancements 库。除了上述示例代码之外,还应该考虑对您的应用程序使用更具体的方法,以提高您的听障和视障用户的体验。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65acca69add4f0e0ff65d318