听起来很简单.. 按住触控板,移动手指,释放 ..但不知何故未触发滑动(而是触发了平移)

UISwipeGestureRecognizer *swipeGesture = [[UISwipeGestureRecognizer alloc]
      initWithTarget:v action:@selector(handleSwipe:)];
swipeGesture.direction= UISwipeGestureRecognizerDirectionUp;
[v addGestureRecognizer:swipeGesture];

平移将由上述序列识别。
UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc]
      initWithTarget:v action:@selector(handlePan:)];
[v addGestureRecognizer: panGesture];

如果对pan进行了注释,则可以用相同的手势来识别滑动。有了这个,有两个问题:
  • 平移和滑动之间有什么区别?
  • 如何在iPhone模拟器上模拟划动?
  • 最佳答案

    根据定义,滑动手势也必定是平移手势-两者都涉及触摸点的平移运动。区别在于识别器的语义:平移识别器寻找平移运动的开始并随着时间的推移继续报告在任何方向上的运动,而滑动识别器立即确定用户的触摸是否沿所需方向线性移动。

    默认情况下,没有两个识别器会识别相同的手势,因此平移和滑动之间存在冲突。最有可能的是,平移识别器“赢得了”冲突,因为它的手势更简单/更笼统:轻扫是平移,但平移可能不是轻扫,因此平移首先识别并排除其他识别器。

    您应该能够使用委托(delegate)方法gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:解决此冲突,或者通过使pan识别器依赖于带有requireGestureRecognizerToFail:的滑动识别器来解决委派问题。

    解决了冲突后,您应该能够通过快速拖动鼠标来模拟单指滑动。 (尽管鼠标比您的手指更精确,但比在设备上进行真实操作要更加灵活。)可以通过按住Option和Shift键来进行两指平移/滑动。

    关于ios - iOS中的Pan和Swipe有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9898627/

    10-09 10:05