xcode - UITapGestureRecognizer无法识别的选择器

标签 xcode swift4 selector uitapgesturerecognizer unrecognized-selector

我正在尝试在我的应用程序中添加当用户在文本字段之外点击其他位置时关闭键盘的可能性。我正在使用UITapGestureRecognizer实现此功能。我使用创建一个新的UITapGestureRecognizer对象
UITapGestureRecognizer(target: Any?, action: Selector?)无法识别的选择器
并将action参数设置为一个函数,该函数可退出此视图中我正在使用的两个文本字段的第一响应者。我将所有设置正确地添加为关键字@objc,然后再使用#selector(dismissKeyboard)表单作为操作传递的方法,但是当我运行应用程序并点击触发函数的视图时,应用程序崩溃,控制台将打印错误


  “由于未捕获的异常而终止了应用程序
  'NSInvalidArgumentException',原因:'-[UIView dismissKeyboard:]:
  无法识别的选择器已发送到实例0x7ff93790f6b0'
  ***首先抛出调用堆栈:“


    override func viewDidLoad() {
    super.viewDidLoad()

    // Set rounded corners
    textFieldView.layer.cornerRadius = 6
    logInButton.layer.cornerRadius = 6

    //HERE'S THE ISSUE

    let viewTapRecognizer = UITapGestureRecognizer(target: self.view, action: #selector(dismissKeyboard))
    self.view.addGestureRecognizer(viewTapRecognizer)

    auth = Auth.auth()

}

@objc func dismissKeyboard() {
    emailTextField.resignFirstResponder()
    passwordTextField.resignFirstResponder()
}


我在这里附上截图

第一个截图



第二个截图

 

第三张截图

最佳答案

Gesture的目标不是(self),而是self.view,因为您要调用所有的视图控制器,而不仅仅是调用其内部的视图,

let viewTapRecognizer = UITapGestureRecognizer(target: self, action: #selector(self.dismissKeyboard))
view.addGestureRecognizer(viewTapRecognizer)


如果要减少hideKeyboard函数,请使用

view.endEditing(true)

关于xcode - UITapGestureRecognizer无法识别的选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56925814/

相关文章:

css - 通过 css 从 iframe 的父级中选择 iframe 的子级

ios - Apple Watch 模拟器不响应推送通知 Payload.apns 中的更改

c - 观察 Xcode Ansi C 中的内存分配

objective-c - 用于 iPhone 开发的 GameMaker

json - Swift Codable 没有按预期工作?

ios - 框架链接

ios - 切换相机后音频/视频不同步

swift - 自定义 UIViewControllerAnimatedTransitioning 完成后显示黑屏

javascript - 具有特定innerHTML的Jquery选择器

从未选择用于多个 OP 代码的 Java SocketChannel register()