点击 UITextField 时如何阻止键盘显示?

Posted

技术标签:

【中文标题】点击 UITextField 时如何阻止键盘显示?【英文标题】:How to Stop Keyboard From Showing When UITextField is Tapped? 【发布时间】:2017-07-31 18:22:43 【问题描述】:

//Xcode 8.3.3 |斯威夫特 3

免责声明:好的,所以有一些关于 SO 的问答可以回答这个问题。然而,经过广泛的谷歌搜索,我无法在 Swift 中找到任何最新的(它们都在 Objective C 中并且可以追溯到 2010 年等)。

我有一个项目,我需要用户能够点击 UITextField 并显示闪烁的行,但我已经有一个使用 UIButtons 实现的数字键盘。这意味着我不希望在按下文本字段时出现默认键盘或任何键盘。

目前最简单的方法是什么?

【问题讨论】:

从 Objective-C 翻译过来相当容易:***.com/a/30208885/1305067 是的,我敢肯定。然而,我在 Objective C 方面几乎没有经验,因此即使是这方面看似最简单的任务也对我构成挑战。 【参考方案1】:

你可以这样做 -

YourTextView.inputView = UIView()
YourTextView.inputAccessoryView = UIView() 

这不会打开键盘,但允许光标闪烁。

【讨论】:

感谢您的回答,但我将把这段代码放在哪里?将其放入 viewDidLoad 似乎没有效果? 您是否从情节提要创建了文本字段的出口以查看控制器类,然后在 viewdidload 上尝试了此操作 啊,问题很简单:我禁用了用户交互。谢谢,我会接受这个答案【参考方案2】:

@paulvs 链接到 Swift 3 的答案是:

let tempView = UIView(frame: .zero)
yourTextField.inputView = tempView

【讨论】:

【参考方案3】:

尝试这样做:

extension YourController: UITextFieldDelegate 

    func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool 
        // do some things

        NotificationCenter.default.addObserver(self, selector: #selector(keyboardHidden), 
        name: NSNotification.Name.UIKeyboardWillShow, object: nil)
        return false
    

    @objc private func keyboardHidden() 
        // disabled keyboard 
        yourTextField.resignFirstResponder()
    

【讨论】:

以上是关于点击 UITextField 时如何阻止键盘显示?的主要内容,如果未能解决你的问题,请参考以下文章

UITextField 提示时键盘不显示

当点击 UITextField 时,加载 nib 文件以充当自定义键盘

点击 UITextField 时既不显示键盘也不显示光标

如何在点击时出现键盘时管理UITextField的高度?

如何阻止我的自定义键盘在 iPad 上“浮动”或脱离

点击 UITextField 在 UITableView 中显示数据