我需要在我的应用程序中支持外部键盘功能,并且需要在应用程序中检测到Alt Tab Tab等关键组合才能触发某些事件.在
IOS 6中,我已经超越了
- (void)sendEvent:(UIEvent *)anEvent;
函数在UIApplication
子类中获取外部键盘上的按键组合.
但现在我在IOS 7中测试我的应用程序,并且sendEvent似乎甚至没有被调用任何硬件键按下事件.
任何解决方案..?
解决方法
使用新的
UIKeyCommand
类和
UIResponder
链,iOS 7中的蓝牙键盘上有100%支持的键盘快捷键处理方式.
I did blog about this,但这是要点:
在Responder链中的某处为keyCommands
添加一个返回UIKeyCommand对象数组的方法:
- (NSArray *)keyCommands { UIKeyCommand *commandF = [UIKeyCommand keyCommandWithInput:@"f" modifierFlags:UIKeyModifierCommand action:@selector(handleCommandF:)]; return @[commandF]; }
然后,当按下⌘F(在文本输入视图中)时,Responder链将查找该handleCommandF方法.如果有多个定义,它将使用最严格的定义(例如,View本身优先于ViewController).
请注意,这仅在输入(例如UITextField或UITextView)是第一响应者时才有效.如果你想在你的应用程序中使用“全局”快捷方式,你可以在屏幕上隐藏UITextField并专注于它.