我的应用程序与通过蓝牙连接的条形码扫描仪一起使用。连接扫描仪后,您可以双击扫描仪上的按钮以关闭/显示屏幕键盘。 90%的时间用户希望隐藏键盘,因为他们将扫描条形码以输入数据。我提前知道有一些例外情况需要启用键盘,我想省下他们按下扫描仪按钮调出键盘的工作,而是强迫键盘出现。
扫描仪不使用resignfirstresponder来关闭键盘,这很明显,因为光标仍然可见,扫描条形码会将数据输入当前文本字段。
有没有人知道如何在不使用resignfirstresponder的情况下解雇/显示屏幕键盘?
供参考我正在使用此扫描仪http://ww1.socketmobile.com/products/bluetooth-scanners/how-to-buy/details.aspx?sku=CX2864-1336
答案 0 :(得分:2)
要在视图中完全结束编辑,您可以使用以下
[self.view endEditing:YES];
这将在视图中为您移除键盘。
答案 1 :(得分:1)
我今天遇到了这个问题,并且找到了解决方案。诀窍是使用第二个文本字段,该文本字段在屏幕外或使用自定义空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
为第一响应者。
答案 2 :(得分:0)
对于仍在努力解决此问题的任何人,您都可以在Swift中通过使文本字段的inputView等于UIView()
也就是说:
yourtextfield.inputview = UIView()