I need to read text from an external bluetooth keyboard (an Inateck barcode scanner) on iOS. I'm searching for a solution without using an hidden UITextField like a listener ?
Read from an external bluetooth keyboard without UITextField
1.8k views Asked by Ludovic At
2
There are 2 answers
3
On
I had the same problem with an external keyboard (although read text from BUSICOM Desktop 1D/2D/QR Code Reader through a cable instead of Bluetooth).
My solution is to implement UIKeyInput
for the UIViewController
.
Swift 5.1:
// MARK: - UIKeyInput
let keyboardHiderView = UIView()
extension QRScannerViewController: UIKeyInput {
override var canBecomeFirstResponder: Bool { true }
var hasText: Bool { false }
override var inputView: UIView? {
return keyboardHiderView
}
func insertText(_ text: String) {
// Character by character input in here
}
func deleteBackward() {}
}
Hoping to help someone.
Unfortunately there is no lower-level API to intercept keystrokes on iOS. If your barcode scanner emulates a keyboard (HID Profile) then your only option is to pair it as a keyboard and direct input into a UITextField. This text field can be hidden as you point out.