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,因为标签仍然需要单独构建。不过,保持订单可能还有其他目的。