我的ViewController中有一个TextField和一个TextView。 ViewController遵循UITextFieldDelegate和UITextViewDelegate及其委托方法。
我希望在单击返回按钮时将TextField或TextView从第一个响应者中撤消。
我在相应的func textFieldShouldReturn(_ textField: UITextField) -> Bool
func textFieldDidEndEditing(_ textField: UITextField)
func textViewShouldReturn(_ textView: UITextView) -> Bool
func textViewDidEndEditing(_ textView: UITextView)
方法中实施了textField.resignFirstResponder() + textView.resignFirstResponder()
并拥有ShouldReturn
。
单击返回按钮时,TextField成功重新启动,键盘隐藏;对于TextView,返回按钮只是向TextView添加一个新行; textViewShouldReturn(_:)
根本没有被调用。
有人可以解释textFieldShouldReturn(_:)
和textViewShouldReturn(_:)
之间的区别吗?如何让TextView不再成为第一个响应者?
由于
import UIKit
class DetailViewController: UIViewController, UITextViewDelegate, UITextFieldDelegate {
@IBOutlet weak var date: UITextField!
@IBOutlet weak var noteText: UITextView!
override func viewDidLoad() {
super.viewDidLoad()
date.delegate = self
noteText.delegate = self
}
//MARK: UITextViewDelegate
func textViewShouldEndEditing(_ textView: UITextView) -> Bool {
// Hide the keyboard.
textView.resignFirstResponder()
return true
}
func textViewDidEndEditing(_ textView: UITextView) {
}
func textFieldShouldEndEditing(_ textField: UITextField) -> Bool {
// Hide the keyboard.
textField.resignFirstResponder()
return true
}
func textFieldDidEndEditing(_ textField: UITextField) {
}
}
答案 0 :(得分:4)
有一种技巧可以让textview退出。
vip
确保将ViewController设置为textview的委托
答案 1 :(得分:1)
更好的方法是在textview键盘上添加工具栏以重新设置键盘,因为用户可能想要添加新行,因此该功能应该保持不变。
How to add done button on keyboard on top of keyboard in IOS?