如何获取某些UITextview包含在标头可访问性转子中?

问题描述

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

screenshot of interface builder showing the mentioned view hierarchy

我希望所有标题都可以通过内置辅助功能转子“标题访问。但是,我无法正常工作。画外音正确以正确的顺序读取所有标签。所有Textview均已选中“可访问性元素”对勾,其中一些已选中“标题”对勾。它们都具有“启用用户交互”标记作为预选值。

但是,当我使用辅助功能检查器检查它们时,所有它们都只列出“静态文本”作为其特征,而在IB中未选择。我还尝试通过.header方法viewDidLoad()特征设置或添加到它们,但这样没有成功:

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

我尝试了通过IB获得文本的静态textview以及通过数据库填充文本的textview,但没有成功。标题导航唯一可用的地方是静态表格视图,在该表格中,画外音无需任何帮助即可正确地将tableviewHeaders标识为标题。使用“线”转子进行的线导航可以按预期的方式工作。

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

This question似乎确实解决了类似的问题。 This persons solution是在真实设备上运行它。虽然这可以正确处理其他模拟器的配音故障,但不能解决我的问题。 其他类似的问题(like here)通常会处理表视图单元格内的问题,这些问题会由于可访问性层次结构而引起问题。我相信这里不是这种情况,因为可以找到并正确读取所有视图。

解决方法

您可以使用系统类型UIAccessibilityCustomRotor.SystemRotorType.heading初始化自定义转子,从而自定义标题转子以包括textView的特定部分。您还可以将标题属性添加到您的属性字符串中。有关更多信息,请参见https://developer.apple.com/videos/play/wwdc2020/10116/