当VoiceOver打开时,应用程序是否可以检测到单指(左右)滑动?

时间:2013-12-20 19:52:28

标签: ios objective-c accessibility voiceover

当VoiceOver在iOS设备上处于活动状态时,单指滑动(左或右)手势允许用户浏览视图中的不同元素。有没有办法检测用户在使用画外音时是否使用了单指滑动手势?

2 个答案:

答案 0 :(得分:8)

您可能会问以下两件事之一:

  1. 您想知道VoiceOver用户何时成功向VoiceOver发出单指滑动左/右手势 - VoiceOver将处理(“窃取”)您的代码中的手势并执行其操作(将VoiceOver光标移至下一个/上一个元素)。您可以获得的最接近的是当VoiceOver光标落在或离开时获取UIView的通知(请参阅UIAccessibilityFocus protocol)。

  2. 您希望部分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())
    }
}
相关问题