4

是否有类似于UIAccessibility.isVoiceOverRunning检测语音控制是否在 iOS 13 中运行的 API?我在当前的beta 文档中找不到任何相关内容。

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

4

2 回答 2

2

这个惊人的新功能没有突出显示,但它的“accessibilityUserInputLabels”属性:不幸的是,既不是事件名称也不是通知。

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

于 2019-09-04T07:28:43.383 回答
0

当您需要在用户处于语音控制时显示不同的 UI 时,这是一种解决方法。

由于没有类似UIAccessibility.isVoiceOverRunning语音控制的 API,您需要重写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
  }
}
于 2019-10-22T23:19:41.847 回答