我的ViewController中有一个TextField和一个TextView。 ViewController遵循UITextFieldDelegate和UITextViewDelegate及其委托方法。
单击返回按钮时,我想从第一响应者中退出TextField或TextView。
我实现了func textFieldShouldReturn(_ textField: UITextField) -> Boolfunc textFieldDidEndEditing(_ textField: UITextField)func textViewShouldReturn(_ textView: UITextView) -> Boolfunc 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) {
}
}
最佳答案
有一个技巧可以退出textview。
extension ViewController: UITextViewDelegate {
func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
if text == "\n" {
textView.resignFirstResponder()
return false
}
return true
}
}
确保将ViewController设置为textview的委托
关于ios - 快速从第一响应者辞职TextView,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44037832/