我正在尝试弄清楚如何检测是否已在连接到 iOS 设备的蓝牙键盘上按下 Escape(以及其他组合键,如 Ctrl 和 alt)。
一些答案似乎表明这是不可能的。但是,Appstore 中有执行此操作的应用程序(例如 iSSH),因此我认为可以以某种方式使用公共(public) API。
我已经尝试创建自己的 UITextInput,但是当按下 Escape 键时,它什么也接收不到。 API 的唯一部分我可以看到 iPad 可能响应的地方是启用 VoiceOver 时(Escape 在 Safari 中工作),所以我想知道是否有通过可访问性 API 进入的方法?
我也试着看看是否有我可以从 NSNotificationCenter 观察到的东西可能有帮助,但还没有找到任何东西。
欢迎提出建议,我已经研究了一天,现在有点不知所措。
最佳答案
您现在可以在 iOS 7 中执行此操作。例如,要实现转义键,请重写 UITextView 并将以下方法放在您的类中:
- (NSArray *) keyCommands {
UIKeyCommand *esc = [UIKeyCommand keyCommandWithInput: UIKeyInputEscape modifierFlags: 0 action: @selector(esc:)];
return [[NSArray alloc] initWithObjects: esc, nil];
}
- (void) esc: (UIKeyCommand *) keyCommand {
// Your custom code goes here.
}
您无需检查以确保您使用的是 iOS 7,因为早期版本的操作系统不会调用 keyCommands 方法。
关于iOS:如何检测硬件蓝牙键盘上的转义/控制键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14791056/