Ios 未识别UITapGestureRecognitor
在我的故事板中,我有一个基本视图,带有一个登录字段。在故事板中,选中了Ios 未识别UITapGestureRecognitor,ios,swift,uitapgesturerecognizer,Ios,Swift,Uitapgesturerecognizer,在我的故事板中,我有一个基本视图,带有一个登录字段。在故事板中,选中了启用用户交互的复选框,我也通过代码进行了设置 下面是我为此使用的代码: class LoginViewController : UIViewController { @IBOutlet weak var emailField: UITextField! @IBOutlet weak var passwordField: UITextField! override func viewDidLoad()
启用用户交互
的复选框,我也通过代码进行了设置
下面是我为此使用的代码:
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函数。困扰我的是,我在我的应用程序的其他地方使用了这些手势,它们工作得很好 这是因为您的
键盘功能标记为private
。如果从选择器调用方法,并且该方法是私有的,则无法调用它们,因为该方法是从外部调用的
因此,从dismisskiboard
中删除private
,它就会工作
更新
如果您更改上述设置,它将起作用,但现在对您不起作用的是辞职FirstResponder
,您不需要进行If检查,因为您总是想在激活关闭键盘手势时隐藏键盘,所以只需调用self.view.endEditing(true)
。我已经为您创建了一个示例项目,其中有一个工作示例。您可以从下载它。这是因为您的解除键盘
功能标记为私有
。如果从选择器调用方法,并且该方法是私有的,则无法调用它们,因为该方法是从外部调用的
因此,从dismisskiboard
中删除private
,它就会工作
更新
如果您更改上述设置,它将起作用,但现在对您不起作用的是辞职FirstResponder
,您不需要进行If检查,因为您总是想在激活关闭键盘手势时隐藏键盘,所以只需调用self.view.endEditing(true)
。我已经为您创建了一个示例项目,其中有一个工作示例。你可以从下载
这样就行了
这就可以了。@爱好者,检查更新。您现在的键盘隐藏有问题。我已经解释了原因,还添加了一个示例项目,向您展示如何解决此问题。@Hobbyist,请查看更新。您现在的键盘隐藏有问题。我已经解释了原因,还添加了一个示例项目来向您展示如何解决这个问题。
func dismissKeyboard() {
view.endEditing(true)
}