Swift 从第一响应者那里退出 TextView
Swift resigning TextView from first responder
我的 ViewController 中有一个 TextField 和一个 TextView。 ViewController 遵循 UITextFieldDelegate 和 UITextViewDelegate 及其委托方法。
我想在单击 return 按钮时让 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()
。
当我点击return按钮时,TextField退出成功,键盘隐藏起来;对于 TextView,return 按钮只是向 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 键盘上添加工具栏以退出键盘,因为用户可能想要添加新行,这样功能应该保持不变。
How to add done button on keyboard on top of keyboard in IOS?
我的 ViewController 中有一个 TextField 和一个 TextView。 ViewController 遵循 UITextFieldDelegate 和 UITextViewDelegate 及其委托方法。
我想在单击 return 按钮时让 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()
。
当我点击return按钮时,TextField退出成功,键盘隐藏起来;对于 TextView,return 按钮只是向 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 键盘上添加工具栏以退出键盘,因为用户可能想要添加新行,这样功能应该保持不变。
How to add done button on keyboard on top of keyboard in IOS?