如何关闭 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 的键盘的主要内容,如果未能解决你的问题,请参考以下文章

如何关闭 UITextView 的键盘

选择另一个 UITextView 时,如何阻止 UITextView 退出第一响应者/关闭键盘?

在多个 UITextView 中显示长文本

如何使键盘从 UITextView 中消失?

触摸只读 UITextView 时关闭 iPhone 数字键盘

无法更改 UIText 视图的字体(使用 Web 服务时)