VoiceOver 正在寻找附近的可访问元素来阅读?

Posted

技术标签:

【中文标题】VoiceOver 正在寻找附近的可访问元素来阅读?【英文标题】:VoiceOver is finding a nearby accessible element to read? 【发布时间】:2018-06-22 13:55:12 【问题描述】:

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

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

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

【问题讨论】:

【参考方案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 将允许选择位于表格视图单元格内的标签并根据需要读出其内容

【讨论】:

以上是关于VoiceOver 正在寻找附近的可访问元素来阅读?的主要内容,如果未能解决你的问题,请参考以下文章

寻找 iOS VoiceOver 辅助功能指南:当我点击文本时,它应该说多少?

iOS VoiceOver 等待元素完成阅读,然后再切换到下一个元素

VoiceOver 读取每个元素两次 - 不一致的行为

NSAttributedString 上的可访问性(旁白)

如何可访问地隐藏表格标题元素?

是否有在线模拟屏幕阅读器工具来测试自定义网页? [关闭]