首页 > 解决方案 > 如何让某些 UITextview 包含在标题可访问性转子中?

问题描述

我有一个具有相当标准布局的详细信息页面,一个滚动视图托管一个垂直堆栈视图,该视图又托管UITextViews 或垂直文本视图,每个视图都包含一个标题和一个“内容”文本视图。这是 Interface Builder 的屏幕截图:

显示上述视图层次结构的界面生成器的屏幕截图

我希望通过内置的可访问性转子 "Headings" 可以访问所有标题。但是,我无法让它工作。Voiceover 以正确的顺序正确读取所有标签。所有 Textview 都选择了“可访问性元素”勾选,其中一些勾选了“标题”勾选。它们都将“用户交互启用”勾选作为预选值。

但是,当我使用 Accessibility Inspector 检查它们时,它们都只列出“静态文本”作为它们的特征,这在 IB 中没有选择。我还尝试.header在方法中为它们设置或添加特征,但viewDidLoad()没有成功:

myTextView1.accessibilityTraits.insert(.header)
myTextView2.accessibilityTraits = [.header]

我尝试了通过 IB 获取文本的静态文本视图,以及从数据库中填充文本的文本视图,但没有成功。标题导航起作用的唯一地方是静态表格视图,其中画外音正确地将 tableviewHeaders 识别为标题,没有任何帮助。使用“线”转子的线导航按预期开箱即用。

我错过了什么还是这是一个错误?

这个问题似乎确实处理了类似的问题。 这个人的解决方案是在真实设备上运行它。虽然这可以正确处理其他模拟器画外音故障,但它并不能解决我的问题。其他类似的问题(如这里)通常处理表格视图单元格内部的问题,这些问题由于可访问性层次结构而导致问题。我相信这里不是这种情况,因为所有视图都已找到并正确阅读。

标签: iosaccessibilitytraitsuiaccessibilityrotor

解决方案


您可以通过使用 system type 初始化自定义转子来自定义标题转子以包含 textView 的特定部分UIAccessibilityCustomRotor.SystemRotorType.heading。您还可以将标题属性添加到属性字符串。有关详细信息,请参阅https://developer.apple.com/videos/play/wwdc2020/10116/


推荐阅读