gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 11:33:55 27 4
gpt4 key购买 nike

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

我不明白为什么不在我正在点击的 View 的层次结构中的某些 View 可以用于 VoiceOver 文本。我没有看到任何类似 iOS 11 记录的行为。这怎么会发生?

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

最佳答案

表格 View 单元格 (容器) 及其内容 (子级) 无法一起访问 (解释 here )

按照以下步骤回答您的编辑提及,以便只点击标签本身,而不是点击其包含的 UITableViewCell , 会阅读标签

  • 创建您自己的 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
    }

遵循这些代码片段将允许选择位于表格 View 单元格内的标签并根据需要读出其内容

关于ios - VoiceOver 正在寻找附近的可访问元素来阅读?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50989579/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com