我在表视图控制器的一个单元格中有几个 textViews,当您触摸键盘外的任何位置时,我正在尝试关闭键盘。我已经尝试了触摸开始的方法,但它不起作用。文本视图不透明,并且启用了用户交互。
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
之外工作(UIVIew
另一个ViewController
(,所以添加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)
}