在我的storyboard
我有一个基本视图,有一个登录字段。在故事板中,选中了Enable user interaction
的复选框,我也通过代码设置了这个。
以下是我用于此的代码:
class LoginViewController : UIViewController {
@IBOutlet weak var emailField: UITextField!
@IBOutlet weak var passwordField: UITextField!
override func viewDidLoad() {
super.viewDidLoad();
let closeKeyboardGesture = UITapGestureRecognizer(target: self, action: "dismissKeyboard");
self.view.userInteractionEnabled = true
self.view.addGestureRecognizer(closeKeyboardGesture);
}
private func dismissKeyboard() {
print("Called")
if passwordField.selected {
passwordField.resignFirstResponder()
}
if emailField.selected {
emailField.resignFirstResponder()
}
}
}
正如您所看到的那样相当简单,但是从不调用dismissKeyboard函数。困扰我的是我在我的应用程序的其他地方使用这些手势并且它们正常工作。
答案 0 :(得分:1)
这是因为您的dismissKeyboard
功能标记为private
。如果从一个选择器调用一个方法并且它是私有的,则无法调用它们,因为该方法是从外部调用的。
从private
移除dismissKeyboard
即可。
<强>更新强>
如果你改变了上面的内容它会起作用,现在不适合你的是resignFirstResponder
你不需要进行if检查,因为你总是想在你激活{{1时隐藏键盘,所以它足以只调用closeKeyboardGesture
。我已经为您创建了一个具有实例的示例项目。您可以从here下载。
答案 1 :(得分:1)
func dismissKeyboard() {
view.endEditing(true)
}
这样就可以了。