【问题标题】:VoiceOver is finding a nearby accessible element to read?VoiceOver 正在寻找附近的可访问元素来阅读?
【发布时间】:2023-03-29 21:17:01
【问题描述】:

我正在为我的 iOS 应用添加辅助功能。我看到一种特定情况,当我点击具有 isAccessibilityElement = false 的 UIView 并且其所有祖先视图也是 isAccessibilityElement = false 时,VoiceOver 将说出来自该视图的 sibling 的文本 - a此视图父级的不同子级。在 Accessibility Inspector 中,当我将鼠标悬停在此视图上时,兄弟姐妹会亮起。

我不明白我正在点击的视图层次结构之外的某些视图如何用于 VoiceOver 文本。我没有看到针对 iOS 11 记录的任何此类行为。这怎么可能发生?

编辑: 我创建了一个带有 UITableView 的简单项目,其中包含 UITableViewCell 对象,每个对象都包含一个 UILabel。点击 UITableViewCell(在 UILabel 之外)将读取其中的 UILabel。如何禁用该行为,以便仅点击标签本身而不是其包含的 UITableViewCell 将读取标签?

【问题讨论】:

    标签: ios accessibility voiceover


    【解决方案1】:

    一个表格视图单元(container) 和它的内容(children) 不能一起访问(解释here

    按照下面的步骤回答您的编辑提及,以便仅点击标签本身,而不是点击其包含的UITableViewCell将读取标签。。 p>

    • 创建您自己的 UITableViewCell 类,包括一个标签。

      class TestTableViewCell: UITableViewCell {
      
          @IBOutlet weak var myLabel: UILabel!
      
          override var accessibilityTraits: UIAccessibilityTraits {
              get { return UIAccessibilityTraitNone }
              set {}
          }
      }
      
    • 在单元实现中将您的标签定义为UIAccessibilityElement,以包含在其accessibilityElements 数组中。

      func tableView(_ tableView: UITableView,
                     cellForRowAt indexPath: IndexPath) -> UITableViewCell {
      
              let zeCell = tableView.dequeueReusableCell(withIdentifier: "myPersoCell",
                                                         for: indexPath) as! TestTableViewCell
      
              zeCell.accessibilityElements = nil
      
              var elements = [UIAccessibilityElement]()
      
              let contentA11yElt = UIAccessibilityElement(accessibilityContainer: zeCell)
              contentA11yElt.accessibilityTraits = UIAccessibilityTraitStaticText
              contentA11yElt.accessibilityFrameInContainerSpace = zeCell.contentLabel.frame //To be adapted
              contentA11yElt.accessibilityLabel = "label content"
      
              elements.append(contentA11yElt)
              zeCell.accessibilityElements = elements
      
              return zeCell
          }
      

    按照这些代码 sn-ps 将允许选择位于表格视图单元格内的标签并根据需要读出其内容

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-24
      • 2012-07-31
      • 1970-01-01
      • 2010-10-24
      • 2011-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多