【问题标题】:Setting order of accesibility labels in subviews of a group, read aloud by Voiceover?在组的子视图中设置可访问性标签的顺序,通过 Voiceover 大声朗读?
【发布时间】:2017-03-28 15:36:35
【问题描述】:

我有一个 UITableView,其中包含基于 XIB 的单元格,其中包含 UILabels 的 UIStackViews。标签有文字 A,B,C,D (看截图)。

当我启用 VoiceOver 或使用辅助功能检查器时,它会自动对单元格中的标签进行分组,读取标签上的所有文本 - 这很好。

但我希望它改变读取子标签的顺序,当超级视图聚焦时,它的读取方式类似于 A、B、C、D - 目前是 A、C、B、D。

我尝试了很多没有运气的事情,比如覆盖 accesibilityElements、shouldGroup... 和 isAccessiblityElement。每次我改变一些东西时,我都会得到:

  • 没有变化
  • 单元格的可访问标签为空
  • 单个标签变为可选择的(这不是我想要的)

关于如何解决这个问题的任何提示?我想我不可能是世界上唯一遇到这个问题的人,但显然很难找到有关最新 iOS 版本的任何信息。我使用 10.3 和 Swift 3...

【问题讨论】:

    标签: ios swift uitableview uilabel accessibility


    【解决方案1】:

    我放弃了从 iOS 自己的子视图的可访问性标签串联中获利的想法,并自己编写了一段代码来处理它。

    extension UIView {
        open func updateCombinedAccessibilityLabel (elements: [AnyObject]) {
            let accLabels: [String] = elements.map { $0.accessibilityLabel ?? "" }
            accessibilityLabel = accLabels.joined(separator: ", ")
        }
    }
    

    然后,当我设置标签的文本值时,我告诉视图如何排列子视图的可访问顺序:

    view.updateCombinedAccessibilityLabel(elements: [view.titleLabel, view.subtitleLabel, view.detailsLabel])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-30
      • 2014-12-09
      • 1970-01-01
      相关资源
      最近更新 更多