首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UITapGestureRecognizer未被识别

UITapGestureRecognizer未被识别
EN

Stack Overflow用户
提问于 2016-01-17 06:15:49
回答 2查看 56关注 0票数 0

在我的storyboard中,我有一个基本视图,其中有一个登录字段。在故事板中,Enable user interaction的复选框是选中的,我也是通过代码来设置的。

下面是我使用的代码:

代码语言:javascript
复制
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函数。让我困扰的是,我在应用程序的其他地方使用了这些手势,它们工作得很好。

EN

回答 2

Stack Overflow用户

发布于 2016-01-17 06:30:53

这是因为您将dismissKeyboard函数标记为private。如果要从选择器调用方法,并且该方法是私有的,则无法调用该方法,因为该方法是从外部调用的。

因此,从dismissKeyboard中删除private,它就会正常工作。

更新

如果你改变上面的设置,它会起作用,现在对你不起作用的是你不需要检查的resignFirstResponder,因为当你激活closeKeyboardGesture时,你总是想隐藏键盘,所以只调用self.view.endEditing(true)就足够了。我已经为您创建了一个示例项目,其中包含一个工作示例。你可以从here下载。

票数 1
EN

Stack Overflow用户

发布于 2016-01-17 17:01:11

代码语言:javascript
复制
func dismissKeyboard() {
    view.endEditing(true)
}

这将会起到作用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34832748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档