在 table 视图控制器中编辑 UITextView 和触摸键盘以外的任何地方时无法关闭键盘
Can't dismiss keyboard when editing UITextView and touching anywhere outside of keyboard in table view controller
我在 table 视图控制器的一个单元格中有几个 textView,我试图在您触摸键盘以外的任何地方时关闭键盘。我已经尝试了 touches started 方法,但它没有用。文本视图不是透明的,并且启用了用户交互。
class RegisterTableViewController: UITableViewController {
override func viewDidLoad() {
// set all text views delegate to self
}
// dismiss keyboard on touch
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
print("touch")
super.touchesBegan(touches, with: event)
view.endEditing(true)
}
}
extension RegisterTableViewController: UITextViewDelegate {
func textViewDidBeginEditing(_ textView: UITextView) {
textView.text = ""
}
}
我是 swift 的新手,非常感谢任何帮助!
在您的 UITableViewCell
文件中添加 touchesBegan
代码,如果您在单元格 TextField
外部但在单元格
内部触摸,这将起作用
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
self.Your_TextField.endEditing(true)
}
但它在 cell
之外不起作用(在另一个 ViewController
的 UIVIew
中),所以添加 UITapGesture
来实现
override func viewDidLoad() {
super.viewDidLoad()
let tapgest = UITapGestureRecognizer(target: self, action: #selector(taptoend))
self.Your_Table_View.addGestureRecognizer(tapgest)
}
@objc func taptoend()
{
self.Your_Table_View.endEditing(true)
print("Key-Board will be dismissed here")
}
您需要在您的单元格中添加点击手势识别器。将所有文本输入放在 UIView 中。在单元格内制作 UIView 的出口。然后将此代码添加到您的单元格中。
@IBOutlet weak var myView: UIView!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
let tap = UITapGestureRecognizer(target: self, action: #selector(self.dismissKeyboard))
self.myView.addGestureRecognizer(tap)
}
@objc func dismissKeyboard() {
self.endEditing(true)
}
我在 table 视图控制器的一个单元格中有几个 textView,我试图在您触摸键盘以外的任何地方时关闭键盘。我已经尝试了 touches started 方法,但它没有用。文本视图不是透明的,并且启用了用户交互。
class RegisterTableViewController: UITableViewController {
override func viewDidLoad() {
// set all text views delegate to self
}
// dismiss keyboard on touch
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
print("touch")
super.touchesBegan(touches, with: event)
view.endEditing(true)
}
}
extension RegisterTableViewController: UITextViewDelegate {
func textViewDidBeginEditing(_ textView: UITextView) {
textView.text = ""
}
}
我是 swift 的新手,非常感谢任何帮助!
在您的
内部触摸,这将起作用UITableViewCell
文件中添加touchesBegan
代码,如果您在单元格TextField
外部但在单元格override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { self.Your_TextField.endEditing(true) }
但它在
cell
之外不起作用(在另一个ViewController
的UIVIew
中),所以添加UITapGesture
来实现override func viewDidLoad() { super.viewDidLoad() let tapgest = UITapGestureRecognizer(target: self, action: #selector(taptoend)) self.Your_Table_View.addGestureRecognizer(tapgest) } @objc func taptoend() { self.Your_Table_View.endEditing(true) print("Key-Board will be dismissed here") }
您需要在您的单元格中添加点击手势识别器。将所有文本输入放在 UIView 中。在单元格内制作 UIView 的出口。然后将此代码添加到您的单元格中。
@IBOutlet weak var myView: UIView!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
let tap = UITapGestureRecognizer(target: self, action: #selector(self.dismissKeyboard))
self.myView.addGestureRecognizer(tap)
}
@objc func dismissKeyboard() {
self.endEditing(true)
}