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