【发布时间】:2018-01-11 15:53:12
【问题描述】:
在我的登录页面上,如果我专注于 UITextEdit 以输入电子邮件和密码,则会出现键盘并向上滚动登录页面。如果我触摸键盘外部,我会添加此代码以删除键盘。
extension UIViewController {
func hideKeyboardWhenTappedAround() {
let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(UIViewController.dismissKeyboard))
tap.cancelsTouchesInView = false
view.addGestureRecognizer(tap)
}
@objc func dismissKeyboard() {
view.endEditing(true)
UIView.animate(withDuration: 0.3, animations: {
self.view.frame = CGRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height)
})
}
}
在我的 viewDidLoad() 函数中,我是这样添加的。
override func viewDidLoad()
{
super.viewDidLoad()
//TODO
self.hideKeyboardWhenTappedAround()
...
}
效果很好,但是如果我在键盘仍然打开时单击登录按钮,dismisskeyboard() 函数可以工作,但 btnClick 函数不起作用。
@IBAction func LoginBtnClick(_ sender: Any)
{
print("loginBtn")
//...
}
我该如何解决这个问题?
【问题讨论】:
标签: ios swift uibutton uitapgesturerecognizer