问题描述
我有一个具有标准布局的详细信息页面,一个滚动视图包含一个垂直堆栈视图,而垂直视图又包含UITextView
或垂直文本视图,每个视图都包含一个标题和一个“内容”文本视图。这是Interface Builder的屏幕截图:
我希望所有标题都可以通过内置辅助功能转子“标题” 访问。但是,我无法正常工作。画外音正确以正确的顺序读取所有标签。所有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/。