我今天遇到了这个问题并找到了解决方案。诀窍是使用屏幕外或隐藏的辅助文本字段并使用自定义空inputView
集,并使该字段成为第一响应者。该字段在软件键盘隐藏时从硬件扫描仪捕获文本。
但是,我使用非常相似的方法来完成这项工作,而是将视图控制器本身作为扫描输入视图的第一响应者。
例子:
class SearchViewController: UIViewController, UIKeyInput {
let searchField = UITextField()
let softwareKeyboardHider = UIView()
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(searchField)
inputAssistantItem.leadingBarButtonGroups = []
inputAssistantItem.trailingBarButtonGroups = []
}
override var canBecomeFirstResponder: Bool {
return true
}
override var inputView: UIView? {
return softwareKeyboardHider
}
var hasText: Bool {
return searchField.hasText
}
func insertText(_ text: String) {
searchField.insertText(text)
}
func deleteBackward() {
searchField.deleteBackward()
}
}
现在,当您想隐藏软件键盘时SearchViewController
,请先做出响应。
要显示软件键盘SearchViewController.searchField
,请先做出响应。