Xcode 9.3.1中UITextViewDelegate无TextViewShouldReturn,如何实现回车隐藏键盘?
关于UITextView收起键盘的正确实现方式
哈哈,你这是把UITextField和UITextView的Delegate方法搞混啦!其实textViewShouldReturn从来就不是UITextViewDelegate里的方法,它是属于UITextFieldDelegate的——毕竟UITextField是单行输入,回车键用来收起键盘很合理,但UITextView是多行输入,系统默认支持换行,所以压根就没给它这个方法~
想要在UITextView里点击回车键收起键盘,正确的做法是用UITextViewDelegate里的textView(_:shouldChangeTextIn:replacementText:)方法,具体实现步骤如下:
- 首先确保你已经给UITextView设置了代理:
override func viewDidLoad() { super.viewDidLoad() yourTextView.delegate = self }
- 实现代理方法,监听回车事件:
func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool { // 判断输入的字符是不是回车键 if text == "\n" { // 收起键盘 textView.resignFirstResponder() // 如果不想让UITextView里插入换行符,就返回false;如果需要保留换行,就返回true return false } return true }
这样设置之后,用户点击回车键时,键盘就会自动收起啦,完全适配你用的Xcode9.3.1版本~
内容的提问来源于stack exchange,提问作者Studwell
相关产品推荐
相关产品推荐

