如何在UITextView中按下回车键后关闭键盘

5

如何在设备上按回车键来关闭键盘?我知道如何关闭键盘,但不知道如何在使用UITextView时关闭:

resignFirstResponder

我尝试过这个方法,但它没有起作用:
self.messageTextView.delegate = self

使用以下这个函数:

func messageTextViewShouldReturn(textView: UITextView) -> Bool
    {
        self.messageTextView.resignFirstResponder()
        return true
    }

是的,只需要使用 self.textview.resignFirstResponder()。 - Lamour
@Lamar - 在哪里使用它? - Eri-Sklii
2个回答

9

请记得在ViewDidLoad()方法中添加UITextDelegate。

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

那并没有做任何事情。而且我正在使用textView,而不是textField。 - Eri-Sklii
正确的函数声明是 func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool { - gondo

1

Swift 5

与textField不同,textView没有可用的IBActions。

创建textViewOutlet。

如果您正在使用tableView: 确定textView行的位置:

let textViewIndex = IndexPath(row: 0, section: 1)

然后在 (_:didSelectRowAt:) 中,如果选择的行不是你的 textView,则关闭键盘。

if indexPath != textViewIndex {
                   textViewOutlet.resignFirstResponder()
               }

如果您没有使用表格视图:在SB视图控制器中,将UITapGestureRecognizer拖动到视图上。然后通过控制拖动将其创建为Tap Gesture Recognizer的IBAction。在操作中从textViewOutlet关闭键盘。
    @IBAction func tapGestureRecognizer(_ sender: Any) {
notesField.resignFirstResponder()
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接