0

I have the following code for dismissing the keyboard when a user taps outside of the text field

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

The selector function is the following:

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

The first bit of code is in the viewDidLoad, which is what my question is about. Why doesn't it work if: let tap UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(dismissKeyboard)) is done outside of the viewDidLoad() ?

1 Answers1

0

self can't be accessed like what you want it to , you can use a lazy var like this outside of any method inside the VC

lazy var tap = { 
    return UITapGestureRecognizer(target: self, action: #selector(dismissKeyboard))
}()
Shehata Gamal
  • 98,760
  • 8
  • 65
  • 87