Как вы останавливаете UITapGestureRecognizer от ловли КАЖДОГО крана?

Здравствуйте, у меня есть представление opengl, и у меня есть панель вкладок. Я использую распознаватель крана, чтобы использовать различные 3D-объекты на экране. На панели вкладок у меня есть кнопка, но она не работает, потому что распознающий кран также использует эти краны. Как это остановить? Я уже пробовал это:


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

Я думаю, что я как-то сравниваю неправильную классификацию, потому что, когда я отлаживаю, он всегда возвращает TRUE.

Ответ 1

  if ([touch.view.superview isKindOfClass:[UIToolbar class]]) return FALSE;

Вот как я заработал. Супервизор - это UIToolbar, возможно UIBarButtonIttem - это вид.

Ответ 2

Или вы можете просто сделать [singleTap setCancelsTouchesInView:NO]. Пример:

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