当VoiceOver在iOS设备上处于活动状态时,单指滑动(左或右)手势允许用户浏览视图中的不同元素。有没有办法检测用户在使用画外音时是否使用了单指滑动手势?
答案 0 :(得分:8)
您可能会问以下两件事之一:
您想知道VoiceOver用户何时成功向VoiceOver发出单指滑动左/右手势 - VoiceOver将处理(“窃取”)您的代码中的手势并执行其操作(将VoiceOver光标移至下一个/上一个元素)。您可以获得的最接近的是当VoiceOver光标落在或离开时获取UIView的通知(请参阅UIAccessibilityFocus protocol)。
您希望部分UI不受VoiceOver手势影响(VoiceOver不会在此区域处理(“窃取”)手势),以便您可以自己检测手势(包括单指向左滑动) / right)以标准方式处理它们并以您希望的方式处理它们。然后,您必须将UIAccessibilityTraitAllowsDirectInteraction
特征添加到相关accessibilityTraits
的{{1}}媒体资源中(有关详细信息,请参阅UIAccessibility protocol)。使用它的一个突出例子是在GarageBand for iOS中 - 钢琴键盘或鼓具有这种特性,因此VoiceOver用户可以在不关闭VoiceOver的情况下在乐器上演奏。
答案 1 :(得分:1)
我最终在UIView上创建了一个类别/扩展,并覆盖了accessibilityElementDidBecomeFocused()。
在这里,我可以获得一个全局钩子,每次可访问性状态发生变化时都会调用它。
Swift示例:
extension UIView {
//MARK: Accessibility
override public func accessibilityElementDidBecomeFocused() {
super.accessibilityElementDidBecomeFocused()
UIApplication.sharedApplication().sendEvent(UIEvent())
}
}