如何关闭 UITextView 的键盘

Posted

技术标签:

【中文标题】如何关闭 UITextView 的键盘【英文标题】:How to dismiss keyboard for UITextView 【发布时间】:2015-03-18 15:47:21 【问题描述】:

当点击键盘上的“完成”按钮时会触发以下事件。它进入条件并返回false。但是,键盘仍保留在屏幕上。

class MyViewController: UIViewController, UITextViewDelegate


func textView(textView: UITextView!, shouldChangeTextInRange: NSRange, replacementText: NSString!) -> Bool 
    if(replacementText.isEqualToString("\n")) 
        textBox.resignFirstResponder()
        return false
    
    return true

textBox 是视图的委托。我已经通过 Interface Builder 连接了它。任何想法为什么它不关闭键盘?

【问题讨论】:

你把文本框的delegate设置为self了吗? 在OP的底部,我提到它是通过IB连接的。我什至在 viewDidLoad() 中添加了 textBox.delegate = self 但仍然没有。 @4thSpace 尝试将 textBox 更改为textView.resignFirstResponder(),看看是否有效 使用在委托方法中传递的 textView 而不是你的属性 textBox。 啊,我误会你了。您是否有任何其他委托方法,例如 textViewShouldEndEditing 正在使用,可以阻止 resignfirstresponder 工作?您是否也尝试过使用 textView,委托的参数而不是您的 textBox? 【参考方案1】:

首先请确保您的 My ViewController 是 textField 的委托, 然后,在方法 shouldChangeTextInRange 上使用在委托方法中传递的 textView 而不是您的属性 textBox。

例如:

class MyViewController: UIViewController, UITextViewDelegate

    func viewDidLoad()
      super.viewDidLoad()
      textBox.delegate = self
    

func textView(textView: UITextView!, shouldChangeTextInRange: NSRange, replacementText: NSString!) -> Bool 
    if(replacementText.isEqualToString("\n")) 
        textView.resignFirstResponder()
        return false
    
    return true

【讨论】:

以上是关于如何关闭 UITextView 的键盘的主要内容,如果未能解决你的问题,请参考以下文章