我的应用程序与通过蓝牙连接的条形码扫描仪一起使用。连接扫描仪后,您可以双击扫描仪上的按钮以取消/显示屏幕上的键盘。在90%的时间里,用户希望隐藏键盘,因为他们将扫描条形码来输入数据。有几个例外,我提前知道键盘将需要启用,我想让他们省去按下扫描仪按钮调出键盘的麻烦,而是强制键盘出现。
扫描仪不使用resignfirstresponder关闭键盘,这一点很明显,因为光标仍然可见,扫描条形码会将数据输入到当前文本字段中。
有人知道如何在不使用resignfirstresponder的情况下关闭/显示屏幕上的键盘吗?
作为参考,我使用的是这个扫描仪http://ww1.socketmobile.com/products/bluetooth-scanners/how-to-buy/details.aspx?sku=CX2864-1336
发布于 2013-09-24 03:34:05
要在视图中完全结束编辑,可以使用以下命令
[self.view endEditing:YES];这将在视图中为您删除键盘。
发布于 2019-01-25 10:44:55
我今天遇到了这个问题,并找到了一个解决方案。诀窍是使用二级文本字段,该字段不在屏幕上,或通过自定义的空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设置为first responder。
发布于 2019-07-13 02:08:02
对于任何还在为此而苦苦挣扎的人,您可以在Swift中通过将文本字段的inputView设置为UIView()来实现这一点
这就是:
yourtextfield.inputview = UIView()https://stackoverflow.com/questions/18963385
复制相似问题