在我的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函数。让我困扰的是,我在应用程序的其他地方使用了这些手势,它们工作得很好。
发布于 2016-01-17 06:30:53
这是因为您将dismissKeyboard函数标记为private。如果要从选择器调用方法,并且该方法是私有的,则无法调用该方法,因为该方法是从外部调用的。
因此,从dismissKeyboard中删除private,它就会正常工作。
更新
如果你改变上面的设置,它会起作用,现在对你不起作用的是你不需要检查的resignFirstResponder,因为当你激活closeKeyboardGesture时,你总是想隐藏键盘,所以只调用self.view.endEditing(true)就足够了。我已经为您创建了一个示例项目,其中包含一个工作示例。你可以从here下载。
发布于 2016-01-17 17:01:11
func dismissKeyboard() {
view.endEditing(true)
}这将会起到作用。
https://stackoverflow.com/questions/34832748
复制相似问题