Search code examples
iosobjective-cuitableviewtableviewuitapgesturerecognizer

didSelectRowAtIndexPath is in conflict with Tap Gesture Recognizer


I've set a Tap Gesture Recognizer in my ViewController via the Storyboard (so all the tap in the view, will hide the keyboard if this one is showed)

The thing is that now, I have add a TableView in this View, and when I clic on a cell, the methode set with the Tap Gesture Recognizer is call, not didSelectRowAtIndexPath.

The "funny" thing, is that if I stay on the cell for 2seconds or more, the delegate didSelectRowAtIndexPath is called, not the TapGestureRecognizer methode.

Could you guys explain what happen here ? where and why am I wrong ?


Solution

  • Your UITapGestureRecognizer probably cancels the touch event when successfully recognizing a touch.

    Try setting

    tapGestureRecognizer.cancelsTouchesInView = NO;
    

    For a more thorough read on this topic, have a look an the conceptual docs on gesture recognition.