【发布时间】:2017-10-17 16:22:31
【问题描述】:
我的 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) 并在相应的ShouldReturn 方法中有textField.resignFirstResponder() + textView.resignFirstResponder()。
当我点击返回按钮时,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) {
}
}
【问题讨论】:
-
您可以为 TextFields 而不是 TextView 使用返回按钮
-
为它创建一个手势或功能,你会没事的
标签: ios swift uitextfielddelegate uitextviewdelegate resignfirstresponder