我已经完成了我想到的所有事情,但是当我运行此代码时,键盘会出现但仍然无法通过点击或返回按钮消失。有人能帮我吗?
class ViewController: UIViewController, UITextFieldDelegate {
@IBOutlet var Label: UILabel!
@IBOutlet var Label2: UILabel!
@IBOutlet weak var textField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
self.textField.delegate = self
}
//Hide keyboard when user touches outside keyboard
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
self.view.endEditing(true)
}
//Presses return key
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
textField.resignFirstResponder()
return(true)
}
}
答案 0 :(得分:0)
答案 1 :(得分:0)
最好不要使用touchesBegan
。一种肯定会起作用的方法:
class ViewController: UIViewController, UITextFieldDelegate {
@IBOutlet var Label: UILabel!
@IBOutlet var Label2: UILabel!
@IBOutlet weak var textField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
self.textField.delegate = self
let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(ViewController.didTapBackground))
tapGestureRecognizer.cancelsTouchesInView = false
self.view.isUserInteractionEnabled = true
self.view.addGestureRecognizer(tapGestureRecognizer)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
func didTapBackground() {
view.endEditing(true)
}
//Presses return key
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
textField.resignFirstResponder()
return(true)
}
}
请注意,我还将cancelTouchesInView
设置为false
,让其他按钮或UITapGestureRecognizers正确完成工作。