【发布时间】:2017-10-26 19:56:50
【问题描述】:
在这种情况下,我可以在完成编辑后在任何地方点击时关闭键盘。但是,如果我不到处点击,我的键盘就会卡住并且无法自动隐藏。 示例:当我编辑完一个文本字段后,我没有点击任何地方来关闭键盘,但我点击了下一个按钮,键盘仍然出现在下一页中。 问题:当我瞄准另一个控制器时如何自动关闭键盘。
下面的代码是关闭键盘的正常点击。
let dismiss: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(dismissKeyboard))
mainView.addGestureRecognizer(dismiss)
---------------------------
func dismissKeyboard() {
//Causes the view (or one of its embedded text fields) to resign the first responder status.
view.endEditing(true)
}
附加
这是我获取另一个控制器的代码
//Implement UITextFieldDelegate
extension LoginViewController: UITextFieldDelegate{
func textFieldDidBeginEditing(_ textField: UITextField) {
self.hideKeyboardWhenTappedAround()
let secondViewController = self.storyboard?.instantiateViewController(withIdentifier: "EnterMpinViewController") as! EnterMpinViewController
secondViewController.pinProtocol = self
textField.resignFirstResponder()
self.navigationController?.pushViewController(secondViewController, animated: true)
// self.performSegue(withIdentifier: "entermPINController", sender: self)
}
}
因此,如果我点击 textField,我会跳转到另一个控制器以添加图钉。键盘卡在那里。
分机代码:
//Implement viewWillDisappear
extension UIViewController {
func hideKeyboardWhenTappedAround() {
let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(UIViewController.dismissKeyboard))
tap.cancelsTouchesInView = false
view.addGestureRecognizer(tap)
}
func dismissKeyboard() {
self.view.endEditing(true)
}
}
【问题讨论】:
-
能不能也加一下
hideKeyboardWhenTappedAround方法的代码。当用户触摸文本字段时,您添加了两种隐藏键盘的方法,但我认为我们只需要self.view.endEditing(true)就足够了 -
哦,和以前一样。不同的是我只做这个扩展
UIViewController。里面的代码还是一样的我用这个`self.view.endEditing(true)
标签: swift swift3 uikeyboard