从没有 UITextField 的外部蓝牙键盘读取

Read from an external bluetooth keyboard without UITextField

我需要从 iOS 上的外部蓝牙键盘(Inateck 条码扫描仪)读取文本。我正在寻找一种解决方案,而不像侦听器那样使用隐藏的 UITextField?

不幸的是,没有较低级别的 API 可以拦截 iOS 上的击键。如果您的条形码扫描器模拟键盘(HID 配置文件),那么您唯一的选择是将其作为键盘配对并直接输入到 UITextField 中。如您指出的那样,可以隐藏此文本字段。

我在使用外部键盘时遇到了同样的问题(尽管通过电缆而不是蓝牙从 BUSICOM 桌面一维/二维/二维码 Reader 读取文本)。

我的解决方案是为 UIViewController.

实施 UIKeyInput

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() {}
}

希望对某人有所帮助。