Swift 关闭 UITextView 键盘

Swift Dismiss UITextView Keyboard

我无法关闭 swift 中文本视图的键盘。

我能够使用以下内容关闭文本字段

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

但我不确定如何使用文本视图进行处理

只需将 UITextView 添加为 IBOutlet 并使用相同的函数:

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

您必须将 textview.delegate 设置为 self 并使用 shouldChangeTextInRange 函数在按 return 时退出。

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
}

swift 3

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

这是一个更好更直观(对您的用户而言)的关闭软键盘的解决方案。 “\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 自定义子 class 中)。

view = 你在 UIViewController 中的整个视图,所以它不仅仅适用于你的 textView 对象。 endEditing = UIView 的一个方法class,你可以阅读它的文档。