You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

tvOS/iOS平台是否有API可查询VoiceOver转子导航模式?

查询VoiceOver当前选中的转子导航模式的API方案

当然有对应的API可以查询!在iOS 13+和tvOS 13+版本中,苹果提供了直接获取当前选中VoiceOver转子的方法,下面是具体的实现思路和代码示例:

  • 先确认VoiceOver运行状态
    在查询转子之前,最好先判断VoiceOver是否处于启用状态,避免无意义的操作:

    if UIAccessibility.isVoiceOverRunning {
        // 执行转子查询逻辑
    }
    
  • 获取当前选中的转子
    通过UIAccessibility.shared.selectedRotor可以拿到当前选中的转子实例,再通过systemIdentifier属性判断具体的转子类型(这个属性是系统预定义的标识符,不受语言本地化影响,比判断名称更可靠):

    if #available(iOS 13.0, tvOS 13.0, *) {
        guard let selectedRotor = UIAccessibility.shared.selectedRotor else {
            // 未选中任何转子
            return
        }
    
        switch selectedRotor.systemIdentifier {
        case .containers:
            print("当前选中的是「容器」转子")
        case .headings:
            print("当前选中的是「标题」转子")
        case .landmarks:
            print("当前选中的是「地标」转子")
        case .links:
            print("当前选中的是「链接」转子")
        case .lists:
            print("当前选中的是「列表」转子")
            // 还有更多系统转子类型,比如.tables, .images等
        default:
            // 自定义转子或其他未匹配的类型
            if let customName = selectedRotor.name {
                print("当前选中的自定义转子:\(customName)")
            }
        }
    } else {
        // 适配iOS/tvOS 13以下版本:没有直接获取选中转子的API,只能通过监听转子切换通知
        NotificationCenter.default.addObserver(
            self,
            selector: #selector(handleRotorChange),
            name: UIAccessibilityRotorDidChangeNotification,
            object: nil
        )
    }
    
  • 旧版本适配说明
    对于iOS 13或tvOS 13之前的版本,苹果没有提供直接获取当前选中转子的API。你只能通过监听UIAccessibilityRotorDidChangeNotification通知来感知转子发生了切换,但无法直接拿到具体的转子类型,这种情况下只能通过用户操作或其他间接方式推断。

内容的提问来源于stack exchange,提问作者John Bear

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:06:09