IOS在没有辞职急救人员的情况下解雇/显示键盘

时间:2013-09-23 15:40:12

标签: ios keyboard

我的应用程序与通过蓝牙连接的条形码扫描仪一起使用。连接扫描仪后,您可以双击扫描仪上的按钮以关闭/显示屏幕键盘。 90%的时间用户希望隐藏键盘,因为他们将扫描条形码以输入数据。我提前知道有一些例外情况需要启用键盘,我想省下他们按下扫描仪按钮调出键盘的工作,而是强迫键盘出现。

扫描仪不使用resignfirstresponder来关闭键盘,这很明显,因为光标仍然可见,扫描条形码会将数据输入当前文本字段。

有没有人知道如何在不使用resignfirstresponder的情况下解雇/显示屏幕键盘?

供参考我正在使用此扫描仪http://ww1.socketmobile.com/products/bluetooth-scanners/how-to-buy/details.aspx?sku=CX2864-1336

3 个答案:

答案 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()