【发布时间】:2020-12-18 08:12:12
【问题描述】:
我有一个具有相当标准布局的详细信息页面,一个滚动视图,它承载一个垂直堆栈视图,它又承载UITextViews 或垂直文本视图,每个视图都包含一个标题和一个“内容”文本视图。这是 Interface Builder 的屏幕截图:
我希望所有标题都可以通过内置的无障碍转子“标题”访问。但是,我无法让它工作。 Voiceover 以正确的顺序正确读取所有标签。所有 Textview 都选择了“可访问性元素”勾选,其中一些勾选了“标题”勾选。它们都将“用户交互启用”勾选作为预选值。
但是,当我使用 Accessibility Inspector 检查它们时,它们都只列出“静态文本”作为它们的特征,这在 IB 中没有选择。我还尝试在 viewDidLoad() 方法中设置或添加 .header 特征给它们,但没有成功:
myTextView1.accessibilityTraits.insert(.header)
myTextView2.accessibilityTraits = [.header]
我尝试了通过 IB 获取文本的静态文本视图,以及从数据库中填充文本的文本视图,但没有成功。标题导航起作用的唯一地方是静态表格视图,其中画外音正确地将 tableviewHeaders 识别为标题,没有任何帮助。使用“线”转子的线导航开箱即用。
是我遗漏了什么还是这是一个错误?
This question 似乎确实处理了类似的问题。 This persons solution 是在真实设备上运行它。虽然这可以正确处理其他模拟器画外音故障,但它并不能解决我的问题。 其他类似的问题 (like here) 经常处理表格视图单元格内部的问题,这些问题由于可访问性层次结构而导致问题。我相信这里不是这种情况,因为所有视图都已找到并正确读取。
【问题讨论】:
-
你有什么理由使用 UITextView 而不是 UILabel 吗?
-
是的,我正在大量使用 textview(shouldInteractWith) 函数,UILabel afaik 不支持这种行为。用 UILabel 支持这个会更容易吗?我可能只能将它用于标题...
-
如果您只需要文本中链接的可点击性,您可以使用 UILabel codementor.io/@nguyentruongky/hyperlink-label-qv2k8rpk9
-
有趣。我可能会调查一下,虽然它看起来更复杂。令我惊讶的是,使用 UILabel 确实使“标题”复选框按预期工作,标签现在包含在转子中。谢谢!如果没有更好的解决方案出现,我会接受这个答案:) 我仍然认为这是苹果方面的一个错误,至少是非常无证的行为......
-
UITextView 比 UILabel 有更多不同的应用程序,它的主要目标是多行文本输入,因此,它可能不打算用作标题。
标签: ios accessibility traits uiaccessibility rotor