我正在尝试在我的应用程序中添加当用户在文本字段之外点击其他位置时关闭键盘的可能性。我正在使用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/