我在UIImageView上的xib中设置了两个UITapGestureRecognizer。我还在相关的头文件中设置了IBAction。 对于单击手势识别器,我在“属性”检查器中将点击和触摸设置为1,状态为“已启用”,延迟触摸结束为“是”。 对于双击手势识别器,我将点击和触摸设置为2,状态为启用,取消触摸视图为YES,延迟触摸结束为YES。
当我双击UIImageView时,它只触发单击的IBAction方法。因此,我决定打印imageview.gestureRecognizer,它会将单击状态的UITapGestureRecognizer显示为Ended,将UITapGestureRecognizer显示为双击状态为可能。
我被困在这几个小时。我找到了以编程方式执行此操作的方法,但我想知道如何通过在xib中设置它来实现它。
任何帮助都会很棒!提前感谢您的回复!
答案 0 :(得分:2)
这是一个非常好的问题。如果您向这样的代码添加手势
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget: self action:@selector(singleTap)];
singleTap.numberOfTapsRequired = 1;
[self.view addGestureRecognizer:singleTap];
UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget: self action:@selector(doubleTap)] ;
doubleTap.numberOfTapsRequired = 2;
[self.view addGestureRecognizer:doubleTap];
[singleTap requireGestureRecognizerToFail:doubleTap];
一切正常,因为你取消了第一个手势
[singleTap requireGestureRecognizerToFail:doubleTap];
如果你在xib中添加两个手势,如果有双击,你总是应该取消单击。而且您总是需要使用2个属性进行手势并使用
[self.firstGestureProperty requireGestureRecognizerToFail:self.secondGestureOroperty];
单击:
双击:
源代码:
一切正常。