我正在使用Motorola CS3070 bar code scanner
的iPad應用程序。我使用HID Profile連接掃描儀,它被iPad視爲藍牙鍵盤。當掃描儀使用藍牙連接到iPad時,如果我們專注於應用程序中的任何textfield
,它將不會打開設備虛擬鍵盤。這是預期的設備對待條形碼掃描器爲bluetooth keyboard
。隱藏鍵盤內部的設備鍵盤根據iPad的某些條件通知通知
在掃描過程中,如果掃描儀斷開連接,將顯示設備虛擬鍵盤。發生這種情況時,我們希望顯示警報,而不是讓鍵盤顯示在屏幕上。我們使用keyboardWillShow
通知來區分是否顯示設備虛擬鍵盤。在keyboardWillShow
裏面,我們試圖隱藏鍵盤。當我們斷開掃描儀,然後選擇文本字段時,這起作用。但是當焦點已經在textfield
並且設備連接到藍牙鍵盤並且如果我們斷開藍牙時,這不起作用。在這種情況下,我們看到鍵盤設備虛擬鍵盤正在顯示。我檢查了keyboardWillShow
裏面的代碼,它正在執行兩次。另外,當它不工作時,當我們點擊任何鍵時,顯示在屏幕上的鍵盤沒有響應。
請讓我知道,如果我們可以隱藏鍵盤時,它切換藍牙鍵盤設備虛擬鍵盤。
請參考下面的代碼keyboardWillShow,提前
-(void) keyboardWillShow: (NSNotification *) theNotification
{
Global *obj=[Global getInstance];
if (obj.selectedStartScan == true) {
UITextField *theTextField = [theNotification object];
//[theTextField resignFirstResponder];
UIAlertView *errorAlert = [[UIAlertView alloc] initWithTitle:@"Error"
message:@"Scanner is not Connected"
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[self.window.rootViewController.view endEditing:YES];
NSLog(@"inside if obj.selectedStartScan :.........");
[errorAlert show];
}
}
感謝。
我已經試過了,並沒有奏效。我在上面粘貼的代碼中評論了該代碼。 – Shyju
請檢查'theTextField'是否具有對測試文件的valied引用,並且它有內存地址,我猜'theTextField'沒有有效的引用 – amrut1