UITapGestureRecognizer conflicting with CCButton



我在Stack上四处寻找解决方案,发现了很多结果,但我仍然无法解决我的问题,主要是因为我正在使用一个CCNode,而不是一些UIView。

无论如何,我的CCButton在没有UITapGestureRecognizer的情况下可以查找,但当我实现它时,它会覆盖我的按钮按压。显然我想避免这种情况。

我的代码在下面。我的滑动手势非常有效,但敲击会干扰我的按钮。我不确定我是否将手势识别器添加到了错误的视图中,因为- (BOOL)gesturerecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch从不运行,这就是我将在异常中放置的位置。如果有人能给我一些关于如何解决这个问题的代码/想法,我们将不胜感激,谢谢!

-(void)didLoadFromCCB   
    UITapGestureRecognizer * gridTapped = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(gridTapped)];
    [[[CCDirector sharedDirector] view] addGestureRecognizer:gridTapped];
    //this works totally fine
    UISwipeGestureRecognizer * swipeLeft= [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipeLeft)];
    swipeLeft.direction = UISwipeGestureRecognizerDirectionLeft;
    [[[CCDirector sharedDirector] view] addGestureRecognizer:swipeLeft];
}

-(void)gridTapped {
    //this works!
    CCLOG(@"Grid tapped");
}
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
    //This never runs
    CCLOG(@"gesture recognized");
    if ((touch.view == mainMenuButton)) {
        return NO;
    }
    return YES;
}

尝试设置UIMapGestureRecognizer委托:

gridTapped.delegate = self;

您需要将VC类声明为实现<UITapGestureRecognizerDelegate>