在 xib 中设置用于单击和双击的 UIGestureRecognizers

UIGestureRecognizers for single and double tap set in the xib

我在我的 xib 中的 UIImageView 上设置了两个 UITapGestureRecognizers。我还在关联的头文件中设置了它们的 IBAction。 对于单击手势识别器,我在属性检查器中将点击和触摸设置为 1,将状态设置为已启用,将延迟触摸结束设置为是。 对于双击手势识别器,我将点击和触摸设置为 2,将状态设置为已启用,将取消触摸设置为 YES,将延迟触摸结束设置为 YES。

当我双击 UIImageView 时,它只会触发单击的 IBAction 方法。因此,我决定打印 imageview.gestureRecognizer,它将单击状态的 UITapGestureRecognizer 显示为已结束,将双击状态的 UITapGestureRecognizer 显示为可能。

我已经被困在这个问题上几个小时了。我找到了以编程方式执行此操作的方法,但我想知道如何通过在 xib 本身中设置它来执行此操作。

任何帮助都会很棒!预先感谢您的回复!

这是个很好的问题。如果像这样向代码中添加手势

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

对于单击:

双击:

源代码:

一切正常。