如何判断iOS系统中辅助功能的Full Keyboard Access是否启用?
判断iOS系统中Full Keyboard Access是否启用的方法
确实UIAccessibility框架里没有像UIAccessibility.isVoiceOverRunning那样直接的API,但可以通过以下两种方式实现判断:
iOS 13及以上版本(推荐)
苹果在iOS 13中新增了UIAccessibility.isKeyboardNavigationEnabled属性,这个属性直接对应Full Keyboard Access的启用状态,可直接调用:
import UIKit let isFullKeyboardAccessOn = UIAccessibility.isKeyboardNavigationEnabled
同时,你可以监听UIAccessibility.keyboardNavigationStatusDidChangeNotification通知,实时获取该功能的状态变化:
NotificationCenter.default.addObserver(forName: UIAccessibility.keyboardNavigationStatusDidChangeNotification, object: nil, queue: .main) { _ in let currentStatus = UIAccessibility.isKeyboardNavigationEnabled // 处理状态变化逻辑 }
iOS 12及更早版本(非官方)
对于旧系统,只能通过读取系统偏好设置的方式判断,但这种方法依赖系统内部键名,存在后续版本失效的风险:
import Foundation func checkFullKeyboardAccessStatus() -> Bool { let userDefaults = UserDefaults.standard // 对应Full Keyboard Access的内部偏好键 return userDefaults.bool(forKey: "KeyboardAssistant") }
注意:非官方的偏好键读取方式不受苹果官方支持,若系统更新修改键名,该方法会失效,建议优先适配iOS 13+版本使用官方API。
内容的提问来源于stack exchange,提问作者Mitch Cohen
相关产品推荐
相关产品推荐

