gpt4 book ai didi

ios - UITapGestureRecognizer - 检测双击或三次点击?

转载 作者:可可西里 更新时间:2023-11-01 06:23:15 27 4
gpt4 key购买 nike

我有一个案例,在特定 View 上双击和三次点击需要发生 2 种完全不同的行为。我设置得很标准,代码如下:

UITapGestureRecognizer *gestureRecognizerDoubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doubleTapDetected:)];
[gestureRecognizerDoubleTap setNumberOfTapsRequired:2];
[self.theView addGestureRecognizer:gestureRecognizerDoubleTap];

UITapGestureRecognizer *gestureRecognizerTripleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tripleTapDetected:)];
[gestureRecognizerTripleTap setNumberOfTapsRequired:3];
[self.theView addGestureRecognizer:gestureRecognizerTripleTap];

我遇到的问题是,如果完成三次点击,双击方法也会被触发,因为它在第三次之前检测到两次点击。因此,点击三次后,两种方法都会被调用。

显然,这不是代码或底层 SDK 的固有问题,因为这是完全可以预料到的。但是,我很好奇是否有人有聪明的方法来阻止双击完成后调用双击功能?我假设我可能必须在延迟计时器上设置双击功能(这会等待一秒钟以确认是否完成三次点击),但我不确定是否有更好的方法,甚至以干净的方式设置这种东西的最佳方法是什么?

提前感谢您就此提供的任何建议!

最佳答案

你可以使用requireGestureRecognizerToFail:来解决这个问题:

UITapGestureRecognizer *gestureRecognizerTripleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tripleTapDetected:)];
[gestureRecognizerTripleTap setNumberOfTapsRequired:3];
[self.theView addGestureRecognizer:gestureRecognizerTripleTap];

UITapGestureRecognizer *gestureRecognizerDoubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doubleTapDetected:)];
[gestureRecognizerDoubleTap requireGestureRecognizerToFail:gestureRecognizerTripleTap];
[gestureRecognizerDoubleTap setNumberOfTapsRequired:2];
[self.theView addGestureRecognizer:gestureRecognizerDoubleTap];

除非三次点击失败,否则双击不会触发。

The class reference像往常一样,有一些额外的信息,并提到这种情况是使用这种方法的好时机。

关于ios - UITapGestureRecognizer - 检测双击或三次点击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20847594/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com