UITapGestureRecognizer 无法识别的选择器
Unrecognized selector with UITapGestureRecognizer
我正在尝试在我的应用程序中添加当用户点击文本字段中的其他地方时关闭键盘的可能性。我正在使用 UITapGestureRecognizer 实现此功能。我使用创建一个新的 UITapGestureRecognizer 对象
UITapGestureRecognizer(target: Any?, action: Selector?)
无法识别的选择器
并将操作参数设置为一个函数,该函数会退出我在此视图中使用的两个文本字段的第一响应者。我正确设置了所有内容,在我作为操作传递的方法之前添加关键字 @objc
并使用 #selector(dismissKeyboard)
表单,但是当我 运行 应用程序并点击触发该功能的视图时,应用程序崩溃并且控制台打印错误
" Terminating app due to uncaught exception
'NSInvalidArgumentException', reason: '-[UIView dismissKeyboard:]:
unrecognized selector sent to instance 0x7ff93790f6b0'
*** First throw call stack:"
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 因为你调用的是所有 viewcontroller 而不仅仅是他内部的视图,
let viewTapRecognizer = UITapGestureRecognizer(target: self, action: #selector(self.dismissKeyboard))
view.addGestureRecognizer(viewTapRecognizer)
如果您想减少隐藏键盘功能,只需使用
view.endEditing(true)
我正在尝试在我的应用程序中添加当用户点击文本字段中的其他地方时关闭键盘的可能性。我正在使用 UITapGestureRecognizer 实现此功能。我使用创建一个新的 UITapGestureRecognizer 对象
UITapGestureRecognizer(target: Any?, action: Selector?)
无法识别的选择器
并将操作参数设置为一个函数,该函数会退出我在此视图中使用的两个文本字段的第一响应者。我正确设置了所有内容,在我作为操作传递的方法之前添加关键字 @objc
并使用 #selector(dismissKeyboard)
表单,但是当我 运行 应用程序并点击触发该功能的视图时,应用程序崩溃并且控制台打印错误
" Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIView dismissKeyboard:]: unrecognized selector sent to instance 0x7ff93790f6b0' *** First throw call stack:"
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 因为你调用的是所有 viewcontroller 而不仅仅是他内部的视图,
let viewTapRecognizer = UITapGestureRecognizer(target: self, action: #selector(self.dismissKeyboard))
view.addGestureRecognizer(viewTapRecognizer)
如果您想减少隐藏键盘功能,只需使用
view.endEditing(true)