2013-12-18 74 views
1

我想以編程方式檢測連接的外部鍵盤或虛擬鍵盤在給定視圖中是否可見。我該怎麼做?如何檢測外接鍵盤是否插入iPad?

我可以使用鍵盤通知,但我需要一種不同的方式來做到這一點。有沒有其他方法可以做到這一點?

回答

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,因此如果您使用此API,您的應用可能會被拒絕。要檢查外部硬件是否存在,請使用專用的GSEventIsHardwareKeyboardAttached()函數。

UIKit偵聽此並相應地設置UIKeyboardImpl.isInHardwareKeyboardMode屬性,但這又是私有API。

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

+0

問題是在這裏我用uiwebviw與編輯div.so UIKeyboardWillShowNotification也與外部鍵盤打電話? – Suravi