我有一个附加了四个平移手势的视图。第一个将最大和最小触摸数设置为 1,第二个设置为 2,以此类推。这使得每个触摸都只能识别一次触摸,而最多四个手指在屏幕上滑动。
那是工作花花公子。不起作用的是检测个人触摸何时结束。当手势结束时我设置的任何事情都只会在所有手势完全结束时发生。
示例委托方法:
- (void) handlePan:(UIPanGestureRecognizer*)recognizer {
//Setting what happens when a gesture is recognized as beginning
if (recognizer.state == UIGestureRecognizerStateBegan) {
//...whatever happens, bunnies follow your finger or whatever
} else
//Setting what happens when a gesture ends
if ((recognizer.state == UIGestureRecognizerStateEnded) |
(recognizer.state == UIGestureRecognizerStateCancelled) |
(recognizer.state == UIGestureRecognizerStateFailed)) {
NSLog(@"end");
}
}
应该发生的是,每当抬起任何手指时,我都会在控制台中看到“结束”。相反,在所有手指都抬起之前,我什么也看不到,此时我看到“结束”重复了四次(或与屏幕上的手指一样多)。
有什么办法可以按照我的意图进行这项工作吗?
编辑摆弄后,我发现我可能没有正确分析我的问题。我想检测手势的触摸何时结束的全部原因是,我希望手势能够在屏幕上有不止一次触摸时变得活跃,但我希望每个手势只跟踪一次触摸本身。我在跟踪触摸的手势上设置了一个“活动”标志,然后在触摸结束后关闭该标志,这不起作用,因为触摸结束检测很难很好地实现。
但是,如果有不同的方法来实现相同的事情,那就是我正在寻找的真实事情:在许多重叠的触摸中,让每个手势识别器跟踪一个且仅一个。