当用户在 UITextField 之外点击时关闭键盘

Dismissing keyboard when user taps outside of UITextField

我有以下代码用于在用户点击文本字段外部时关闭键盘

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

选择器函数如下:

@objc func dismissKeyboard() {
    view.endEditing(true)
}

第一段代码在 viewDidLoad 中,这就是我的问题所在。为什么它不起作用,如果: let tap UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(dismissKeyboard)) 在 vi​​ewDidLoad() 之外完成 ?

self 无法像您希望的那样访问,您可以在 VC

内的任何方法之外使用这样的 lazy var
lazy var tap = { 
    return UITapGestureRecognizer(target: self, action: #selector(dismissKeyboard))
}()