iOS – 多个Tap手势识别器
在我的应用程序中,我要检测单,双和三个水龙头。 所以,我正在使用UITapGestureRecognizer。 我正在使用以下代码:
UITapGestureRecognizer *oneTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTapGestureOnAnimal:)]; oneTap.numberOfTapsRequired = 1; UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleDoubleTapGestureOnAnimal:)]; doubleTap.numberOfTapsRequired = 2; [doubleTap requireGestureRecognizerToFail:oneTap]; UITapGestureRecognizer* tripleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTripleTapGestureOnAnimal:)]; tripleTap.numberOfTapsRequired = 3; [tripleTap requireGestureRecognizerToFail:doubleTap]; [self addGestureRecognizer:oneTap]; [self addGestureRecognizer:doubleTap]; [self addGestureRecognizer:tripleTap];
但问题是它总是只检测单和双击。 它根本没有检测到三重敲击….有人可以指出我在检测三重敲击时所犯的错误吗?
检查一下,
[oneTap requireGestureRecognizerToFail:doubleTap]; [oneTap requireGestureRecognizerToFail:tripleTap]; [doubleTap requireGestureRecognizerToFail:tripleTap];
您已经切换了方法中的水龙头,而您没有在上面的第二行。 理想情况下,只有在双击和三击失败时才能检测到一个敲击。 当三次敲击失败时,应检测到双击。
将您的2个requireGestureRecognizerToFail调用更改为:
[oneTap requireGestureRecognizerToFail:tripleTap]; [oneTap requireGestureRecognizerToFail:doubleTap]; [doubleTap requireGestureRecognizerToFail:tripleTap];