【发布时间】:2018-08-09 13:10:39
【问题描述】:
我正在尝试在我的应用中添加当用户从文本字段中点击其他位置时关闭键盘的可能性。我正在使用 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()
}
我在这里附上截图
第一张截图
第二张截图
第三张截图
【问题讨论】:
-
请显示足够的代码来检查您做错了什么。错误消息是说
UITapGestureRecognizer的target是UIView,它没有方法dismissKeyboard:。 -
复制/粘贴代码和错误,而不是截图。错误是明确的,对此有很多问题。您在哪里创建了 tapGesture?
-
@OOPer 我会这样做
-
UITapGestureRecognizer(target: self.view,=>UITapGestureRecognizer(target: self,因为是self正在实现和执行方法func dismissKeyboard()。 -
@OOPer 问题是我在 ViewController 中创建了方法 dismissKeyboard
标签: xcode swift4 selector uitapgesturerecognizer unrecognized-selector