Search code examples
iphoneobjective-cbuttonconflictuigesturerecognizer

How do you stop UITapGestureRecognizer from catching EVERY tap?


Hello I have an opengl view and on that I have a tab bar. I'm using a tap recognizer to tap different 3d objects on screen. In the tab bar I have a button but it doesn't work because the tap recognizer catches these taps too. How do I stop this? I've already tried this:


- (BOOL) gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
  if ([touch.view isKindOfClass:[UIBarButtonItem class]]) return FALSE;
  return TRUE;
}

I think I am somehow comparing wrong classess because when I debug it returns TRUE always.


Solution

  • Or you can just do [singleTap setCancelsTouchesInView:NO]. Example:

    UITapGestureRecognizer *singleTap = [
        [UITapGestureRecognizer alloc]
        initWithTarget: self
        action: @selector(yourSelector:)
    ];
    [singleTap setCancelsTouchesInView:NO];
    [[self view] addGestureRecognizer: singleTap];