如何过滤单次点击事件和双击事件的快速多次点击

Win*_*ero 4 uigesturerecognizer ios

我有以下手势设置:

UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self
                                                                            action:@selector(singleTapDetected:)];
singleTap.numberOfTapsRequired = 1;
[self addGestureRecognizer:singleTap];

UITapGestureRecognizer *doubleClick = [[UITapGestureRecognizer alloc] initWithTarget:self
                                                                              action:@selector(doubleClickDetected:)];
doubleClick.numberOfTapsRequired = 2;
[self addGestureRecognizer:doubleClick];

[singleTap requireGestureRecognizerToFail:doubleClick];
Run Code Online (Sandbox Code Playgroud)

当我快速点击 3 次时,我发现它将被转换为一次双击事件和一次单击事件,并为我的应用程序引入了一个错误。

我想要的东西是,如果用户点击 3 次或更多次,则只会触发双击事件。有人可以帮忙解决这个问题吗?预先感谢。

Sur*_*avi 6

我回答这个问题是为了 iOS 10 和 Swift 3 开发者的利益。

目前在 iOS 10 和 Swift 3 中不存在这个问题。如果未处理,三次点击将降级为双击,并触发相应的操作。尝试下面的例子:

斯威夫特 3 解决方案:

doubleTap = UITapGestureRecognizer(target: self, action:#selector(self.doubleTapAction(_:)))
doubleTap.numberOfTapsRequired = 2


singleTap = UITapGestureRecognizer(target: self, action:#selector(self.singleTapAction(_:)))
singleTap.numberOfTapsRequired = 1

singleTap.require(toFail: doubleTap)

self.view.addGestureRecognizer(doubletap)
self.view.addGestureRecognizer(singleTap)
Run Code Online (Sandbox Code Playgroud)