从没有 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() {}
}
希望对某人有所帮助。
我需要从 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() {}
}
希望对某人有所帮助。