我需要在我的应用程序中支持外部键盘功能,并且需要在应用程序中检测到Alt + Tab Tab等组合键才能触发某些事件。在IOS 6中,我覆盖了
- (void)sendEvent:(UIEvent *)anEvent;
在UIApplication
子类中运行,以获取外部键盘上的按键组合。
但是现在我在IOS 7中测试我的应用程序,并且似乎甚至没有调用sendEvent任何硬件按键事件。
任何解决方案..?
答案 0 :(得分:18)
使用新的UIKeyCommand
类和UIResponder
链,可以100%支持在iOS 7中处理蓝牙键盘上的键盘快捷键。 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
并专注于此处。
答案 1 :(得分:-1)
在IOS7.x中检测硬件键盘按钮按下事件的方法之一可以是覆盖该方法 - (void)handleKeyUIEvent:(id)UIApplication中的anEvent。
但这是ios的私有方法,可能导致appstore拒绝。