2013-12-18 46 views
0

我正在使用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]; 

    } 
} 

感謝。

回答

0

當您收到通知,只需調用 [UItextFiled ressignFirstResponder]

這將隱藏keaboard

+0

我已經試過了,並沒有奏效。我在上面粘貼的代碼中評論了該代碼。 – Shyju

+0

請檢查'theTextField'是否具有對測試文件的valied引用,並且它有內存地址,我猜'theTextField'沒有有效的引用 – amrut1