How do you stop UITapGestureRecognizer from catching EVERY tap?

情到浓时终转凉″ 提交于 2019-11-27 01:15:43

问题


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.


回答1:


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];



回答2:


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

This is how I got it to work. The superview is a UIToolbar, probably UIBarButtonIttem is a view after all.



来源:https://stackoverflow.com/questions/4885693/how-do-you-stop-uitapgesturerecognizer-from-catching-every-tap

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!