2013-12-17 31 views
4

我正在使用Motorola CS3070條形碼掃描儀的iPad應用程序。我使用HID Profile連接掃描儀,它被iPad視爲藍牙鍵盤。當使用藍牙將掃描儀連接到iPad時,如果我們專注於應用程序中的任何文本字段,則不會打開設備虛擬鍵盤。這是設備將條形碼掃描器視爲藍牙鍵盤所期望的。我們如何知道iPad是否使用藍牙鍵盤或設備虛擬鍵盤?

在掃描過程中,如果掃描儀斷開連接,將顯示設備虛擬鍵盤。我想要的是,當掃描儀斷開連接時,我需要從某個事件中獲取該信息,並向用戶顯示彈出式窗口/警報,表明掃描儀已斷開連接。我認爲如果有方法知道設備虛擬鍵盤何時顯示或應用程序使用藍牙鍵盤,我們可以使用該信息來顯示彈出窗口。

請讓我知道,如果可能或任何其他建議,我可以嘗試。

在此先感謝。

回答

1

間接和SDK安全的方法是使文本字段成爲第一響應者。如果外部鍵盤存在,則不應發佈本地通知。

你可以聽「GSEventHardwareKeyboardAttached」(kGSEventHardwareKeyboardAvailabilityChangedNotification)達爾文通知,但這是一個私人API,所以它是可能的,如果你使用這個你的應用程序將會被拒絕。要檢查外部硬件是否存在,請使用專用的GSEventIsHardwareKeyboardAttached()函數。

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

我從here得到了這個答案。

+0

謝謝尼廷。有用。 – Shyju