iOS 13:如何检测“语音控制”是否正在运行

时间:2019-09-03 21:53:40

标签: ios swift voice-control

是否有类似于UIAccessibility.isVoiceOverRunning的API来检测Voice Control是否在iOS 13中运行?在当前的beta docs中,我找不到任何内容。

语音控制:https://www.apple.com/ios/ios-13-preview/features/(请参阅辅助功能部分)。

2 个答案:

答案 0 :(得分:1)

此令人惊叹的新功能未突出任何内容,但其 'accessibilityUserInputLabels' 属性:不幸的是,event namenotification都没有。

等待iOS 13的正式发布,这可能会在最终文档中提供一些消息:像我一样点燃蜡烛。 ; o)

答案 1 :(得分:0)

这是一种变通方法,当用户在语音控制中时需要显示不同的UI。

由于没有用于语音控制的API,例如UIAccessibility.isVoiceOverRunning,因此您需要覆盖accessibilityActivate才能知道用户何时使用辅助功能与您的应用进行交互。

class Button: UIButton {

  override init(frame: CGRect) {
    super.init(frame: frame)

    addTarget(self, action: #selector(handleTouchUpInside), for: .touchUpInside)
  }

  override func accessibilityActivate() -> Bool {
    // Launch more accessible UI
    if UIAccessibility.isVoiceOverRunning {
      // VoiceOver
    } else if UIAccessibility.isSwitchControlRunning {
      // Switch Control
    } else {
      // Probably used Voice Control or Full Keyboard Access
    }
    return true
  }

  @objc func handleTouchUpInside() {
    // Standard interaction - continue to show default UI
  }
}