如何检测iPad上插入的外接键盘?

时间:2013-12-18 04:53:22

标签: ios objective-c ipad uikeyboard

我想以编程方式检测外部键盘连接或虚拟键盘在给定视图中是否可见。我该怎么办?

我可以使用键盘通知来完成它,但我需要一种不同的方式来做到这一点。还有其他办法吗?

1 个答案:

答案 0 :(得分:0)

也许这有帮助...

首次注册通知:

[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];

然后接受:

-(void)keyboardWillHide:(NSNotification *)_notification {
NSLog(@"%@",[_notification infoDict]);
}
-(void)keyboardWillShow:(NSNotification *)_notification {
NSLog(@"%@",[_notification infoDict]);

}

只有在显示内部键盘并且没有连接外部键盘时才会调用此功能!如果连接了外部键盘,则不会调用WillShow Notification。

来源: How to detect external keyboard connectification in objective-c?


另一种方式可能是:

间接和SDK安全的方法是使文本字段成为第一响应者。如果存在外部键盘,则不应发布UIKeyboardWillShowNotification本地通知。

您可以收听“GSEventHardwareKeyboardAttached”(kGSEventHardwareKeyboardAvailabilityChangedNotification)Darwin通知,但这是一个私有API,因此如果您使用此应用程序,您的应用程序可能会被拒绝。要检查外部硬件是否存在,请使用私有GSEventIsHardwareKeyboardAttached()函数。

UIKit会监听并相应地设置UIKeyboardImpl.isInHardwareKeyboardMode属性,但这又是私有API。

来源:How can I detect if an external keyboard is present on an iPad?