【问题标题】:when VoiceOver is on, is there a way an app can detect a single-finger (left-right)swipe?当 VoiceOver 开启时,应用程序是否可以检测到单指(左右)滑动?
【发布时间】:2013-12-20 19:52:27
【问题描述】:

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

【问题讨论】:

    标签: ios objective-c accessibility voiceover


    【解决方案1】:

    您可能会问以下两件事:

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

    2. 您想让部分 UI 不受 VoiceOver 手势的影响(VoiceOver 不会处理(“窃取”)该区域中的手势),以便您可以自己检测手势(包括单指向左滑动) /right) 以标准方式处理它们,并以您想要的应用程序方式处理它们。然后您必须将UIAccessibilityTraitAllowsDirectInteraction 特征添加到accessibilityTraits 属性到相关的UIView(有关更多详细信息,请参阅UIAccessibility protocol)。使用此功能的一个突出示例是在 iOS 版 GarageBand 中 - 钢琴键盘或鼓具有此特性,因此 VoiceOver 用户可以在乐器上演奏而无需关闭 VoiceOver。

    【讨论】:

      【解决方案2】:

      我最终在 UIView 上创建了一个类别/扩展并覆盖了accessibilityElementDidBecomeFocused()。

      在这里我可以获得一个全局钩子,每次可访问性状态发生变化时都会调用它。

      Swift 示例:

      extension UIView {
      
      //MARK: Accessibility
      
          override public func accessibilityElementDidBecomeFocused() {
              super.accessibilityElementDidBecomeFocused()
      
              UIApplication.sharedApplication().sendEvent(UIEvent())
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2012-08-29
        • 2011-07-23
        • 2018-12-31
        • 1970-01-01
        • 2015-12-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-06
        相关资源
        最近更新 更多