点击 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 时如何阻止键盘显示?的主要内容,如果未能解决你的问题,请参考以下文章