Heisenberg
Heisenberg

Reputation: 313

UITapGestureRecognizer breaks UITableView didSelectRowAtIndexPath in SearchField Class in Swift?

I am using this library for SearchText Field

https://github.com/apasccon/SearchTextField

Here is my Code :

  override func viewDidLoad() {
    super.viewDidLoad()


    self.view.addGestureRecognizer(UITapGestureRecognizer(target: self, action: Selector("dismissKeyboard")))


}

func dismissKeyboard()
{
    ClientList.resignFirstResponder()
    self.view.endEditing(true)

}

Dismiss of keyboard is working but the didSelectRowAtIndexPath is not getting called so i am not able to select anything

Image for Reference : enter image description here

Partial Solution I Done:

func hideKeyboard(gestureRecognizer: UIGestureRecognizer) {
        let point = gestureRecognizer.locationInView(ClientList.tableView)
        let indexPath = ClientList.tableView!.indexPathForRowAtPoint(point)

        if indexPath != nil {
            return
        }
        if ClientList.becomeFirstResponder() {
            ClientList.resignFirstResponder()
        }

    }

But now issue is i have other list too , how can i implement for other list ?

Upvotes: 1

Views: 1113

Answers (3)

Heisenberg
Heisenberg

Reputation: 313

You can solve this issue like this

ViewDidLoad

self.tap = UITapGestureRecognizer(target: self, action: "viewTapped:")
self.tap.delegate = self
self.view.addGestureRecognizer(self.tap)

Function

func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool {
    if touch.view != nil && touch.view!.isDescendantOfView(self.tableView) {
        return false
    }
    return true
}

Upvotes: 2

lordxxx
lordxxx

Reputation: 47

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

Add this to viewDidLoad

And add this function

func dismissKeyboard() {
    //Causes the view (or one of its embedded text fields) to resign the first responder status.
    view.endEditing(true)
}

Upvotes: 0

Otto Gutierrez
Otto Gutierrez

Reputation: 487

Who's the target of the gesture? I think it should be the list since it is what you tap and it is above the view

Upvotes: 0

Related Questions