UITapGestureRecognizer未触发

时间:2013-02-21 22:42:18

标签: objective-c cocoa-touch uigesturerecognizer

为什么swipeRightL触发事件而tapR不是?

UISwipeGestureRecognizer *swipeRightL=[[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipeLeft)];
swipeRightL.numberOfTouchesRequired=1;
swipeRightL.direction=UISwipeGestureRecognizerDirectionLeft;
[self.view addGestureRecognizer:swipeRightR];
[self.view addGestureRecognizer:swipeRightL];
UITapGestureRecognizer *tapR=[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(onTap)];
tapR.numberOfTapsRequired=1;
tapR.numberOfTouchesRequired=1;
[self.view addGestureRecognizer:tapR];

3 个答案:

答案 0 :(得分:1)

你的手势很可能互相矛盾。如果您删除滑动手势它是否有效呢?

您可能希望查看此委托回调并返回YES:

– gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:

答案 1 :(得分:0)

“简单手势识别器”的Apple示例代码提供了轻触,滑动和旋转手势识别器的示例,所有三种类型都在一个视图中工作。看看这个。示例代码使用故事板来完全配置视图及其控制器,因此代码有点稀疏。但您应该能够将编码配置与Xcode的“属性检查器”和“连接检查器”进行比较,以确定您的差异。

答案 2 :(得分:0)

删除以下设置:

tapR.numberOfTaps /默认情况下触摸它已经为1。

尝试实现委托方法并检查它们是否被解雇了?

tapR.delegate = self;

- (BOOL)gestureRecognizerShouldBegin:sender { return YES; }

您还可以提供有关视图结构的一些详细信息吗?例如,某些其他手势(滚动视图或其他内容)可能是您滑动不触发的原因。