How to dismiss UISearchBar keyboard without effecting other functionalities?

Viewed 49

This is how my screen looks like..

Now my code for dismissing the keyboard when the use of searchbar is over:

    override func viewDidLoad() {
        super.viewDidLoad()

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

        @objc func handleTap() {
        searchbar.resignFirstResponder()
    }

By this my keyboard is getting dismissed but whenever using this, the tableview DidSelectRowAt is no more working (Though there is no error or warning). I am confused that what is the problem exactly. Please help! Thanks is advance..

1 Answers

Set cancelsTouchesInView to false, for detailed explanation: link

extension UIViewController {
    func hideKeyboard() {
        let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(UIViewController.dismissKeyboard))
        tap.cancelsTouchesInView = false
        view.addGestureRecognizer(tap)
    }
    
    @objc
    func dismissKeyboard() {
        view.endEditing(true)
    }
}

Usage:

call hideKeyboard() in the viewDidLoad of the controller.

Related