我知道我可以通过以下方式模拟按钮:
buttonObj.sendActions(for: .touchUpInside)
但实际上是点击了按钮并且没有为VoiceOver激活元素。我希望以编程方式点击元素,就好像用户在VoiceOver打开时用手指点击它一样 - 所以VoiceOver应该开始阅读项目的accessibilityLabel
,但实际上还没有执行该项目的操作。
答案 0 :(得分:3)
您想要ACCESSIBILITY_FOCUS该项目。您可以使用辅助功能通知执行此操作。
UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification,
elementYouWantToFocus);
请注意,在大多数情况下,将可访问性转移到用户身上会降低可访问性。如果您的用户界面结构合理,用户应该能够自己查找内容。甚至是新内容。主要的上下文变化等应该公布,一般来说iOS默认行为将更容易访问,因为它们是用户习惯的。
https://www.w3.org/TR/UNDERSTANDING-WCAG20/consistent-behavior.html
我还在这个blog post上更深入地讨论了这个主题。