手势识别器:shouldReceiveTouch:方法没有被调用

10

gestureRecognizer:shouldReceiveTouch: 方法没有被调用,我设置不正确吗?

-(id) init 
{
UILongPressGestureRecognizer *touchHold = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleTouchHold:)];
touchHold.minimumPressDuration = 1.0f;
touchHold.numberOfTouchesRequired = 1;
[[CCDirector sharedDirector].openGLView addGestureRecognizer:touchHold];
}

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch 
{
     return NO;
}

尽管我将布尔值设置为“否”,但按住方法仍在被调用。

1个回答

31

看起来你还没有设置代理?

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch

这是UIGestureRecognizerDelegate的一部分。因此,您也应该设置委托。

touchHold.delegate = self;

编辑: 您应该告诉您的视图控制器实现UIGestureRecognizerDelegate。类似于:

@interface YourViewController <UIGestureRecognizerDelegate>

Assigning to 'id<UIGestureRecognizerDelegate>' from incompatible type 'HelloWorldLayer *' - iamruskie
1
你的 @interface YourViewController <...> 上有 <UIGestureRecognizerDelegate> 吗? - ewiinnnnn
啊,我之前有这样的代码@interface YourViewController { id<UIGestureRecognizer>delegate;},然后设置了touchHold.delegate = delegate;。谢谢你的帮助,现在可以工作了。刚开始有点困惑。 - iamruskie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接