UIGestureRecognizer中的多个触摸顺序

Mar*_*Pen 10 cocoa-touch uikit uigesturerecognizer ios

似乎无法保证在循环UIGestureRecognizer的方法[locationOfTouch:inView:]时出现UITouches的顺序.特别:

for (int i = 0; i < [recognizer numberOfTouches]; i++) {
  CGPoint point = [recognizer locationOfTouch:i inView:self];
  NSLog(@"[%d]: (%.1f, %.1f)", i, point.x, point.y);
}
Run Code Online (Sandbox Code Playgroud)

人们会认为索引为0的点将是第一个UITouch,或者是第一个被释放的点,但通常2个触摸的顺序是混合的.有谁知道如何测试这些事件的顺序?遗憾的是,无法访问UITouch对象本身(使用时间戳).

此外,文档中不保证触摸-locationOfTouch:inView:始终处于可靠的顺序.任何人都可以确认或否认这个吗?

lem*_*nar 4

您可以尝试设置识别器的delegate属性并实现-gestureRecognizer:shouldReceiveTouch:. 应该按顺序调用它,然后您可以按住触摸。