Swift关闭UITextView键盘

时间:2015-02-02 14:41:44

标签: swift uitextview

我无法在swift中解雇文本视图的键盘。

我能够使用以下

关闭文本字段
    @IBAction func DismissKeyboard(sender: AnyObject) 
    {
         self.resignFirstResponder()
    }

但我不确定如何使用文本视图

4 个答案:

答案 0 :(得分:23)

您必须将textview.delegate设置为self并使用shouldChangeTextInRange功能在按返回时退出。

func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool {
    if text == "\n"  // Recognizes enter key in keyboard
    {
        textView.resignFirstResponder()
        return false
    }
    return true
}

答案 1 :(得分:2)

swift 3

func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
    if text == "\n" {
        textView.resignFirstResponder()
        return false
    }
    return true
}

答案 2 :(得分:0)

只需将UITextView添加为IBOutlet并使用相同的功能:

@IBAction func DismissKeyboard(sender: AnyObject) {
    yourtextView.resignFirstResponder()
}

答案 3 :(得分:0)

这是消除软键盘的更好直观的解决方案(对您的用户而言)。 “ \ n”解决方案的问题是用户无法在textView中插入换行符-因为在换行符发生之前按键盘上的Return / Done按钮将关闭键盘。通过以下方法,您可以在告诉用户仅敲击外部文本输入字段的情况下保留该功能,这是消除键盘的一种标准方法。

// MARK: - dismiss keyboard when user taps outside of text boxes

override func viewDidLoad() {
    super.viewDidLoad()

    configureTapGesture()
}

private func configureTapGesture() {
    let tapGesture = UITapGestureRecognizer(target: self, action: #selector(WriteJournalEntryViewController.handleTap))
    view.addGestureRecognizer(tapGesture)
}

@objc func handleTap() {
    view.endEditing(true)
}

(假定此代码位于名为“ WriteJournalEntryViewController”的UIViewController自定义子类中)。

view = UIViewController中的整个视图,因此它不仅仅适用于textView对象。 endEditing = UIView类的方法,您可以阅读其文档。