iOS 个按视图分组的辅助功能字段
iOS accessibility fields grouped by View
据我了解,iOS 上的无障碍工具是自上而下、从左到右阅读的。有没有一种方法可以按视图分组,这样两个相邻的视图在相同的高度(一个在右边,一个在左边)不会一起读取它们各自的元素(右左,右左),而是所有的权利视图的元素后跟左视图的元素?
使用 UIAccessibilityContainer 协议,尤其是 shouldGroupAccessibilityElement 实例 属性 可以帮助您将所有可访问元素分组以供阅读按特定顺序由 VoiceOver 输出。
我建议看一下这个 good example,包括强调拼写方式的{代码片段 (ObjC;Swift) + 插图}按照预定的顺序输出数字键盘。
接受的答案很好,但为了让下一个人更多地阅读这里,您可以这样做:
func setAccessibility() {
/// groups all elements into a single accessibility element.
/// The order isn't important for screen reader.
accessibilityElements = [rightLabel, leftLabel]
/// required
isAccessibilityElement = true
/// grouping does not auto generate accessibilityLabel content,
/// so you can setup the text as you like.
let rightText = rightLabel.text ?? ""
let leftText = leftLabel.text ?? ""
accessibilityLabel = "\(rightText), \(leftText)"
}
元素数组的顺序对屏幕来说并不重要reader,因为标签仍然需要单独构建。不过,保持订单可能还有其他目的。
据我了解,iOS 上的无障碍工具是自上而下、从左到右阅读的。有没有一种方法可以按视图分组,这样两个相邻的视图在相同的高度(一个在右边,一个在左边)不会一起读取它们各自的元素(右左,右左),而是所有的权利视图的元素后跟左视图的元素?
使用 UIAccessibilityContainer 协议,尤其是 shouldGroupAccessibilityElement 实例 属性 可以帮助您将所有可访问元素分组以供阅读按特定顺序由 VoiceOver 输出。
我建议看一下这个 good example,包括强调拼写方式的{代码片段 (ObjC;Swift) + 插图}按照预定的顺序输出数字键盘。
接受的答案很好,但为了让下一个人更多地阅读这里,您可以这样做:
func setAccessibility() {
/// groups all elements into a single accessibility element.
/// The order isn't important for screen reader.
accessibilityElements = [rightLabel, leftLabel]
/// required
isAccessibilityElement = true
/// grouping does not auto generate accessibilityLabel content,
/// so you can setup the text as you like.
let rightText = rightLabel.text ?? ""
let leftText = leftLabel.text ?? ""
accessibilityLabel = "\(rightText), \(leftText)"
}
元素数组的顺序对屏幕来说并不重要reader,因为标签仍然需要单独构建。不过,保持订单可能还有其他目的。