我找到了。 android为ACTION_MOVE提供了一个ACTION_UP,用于相同(或关闭)的位置。 iPhone根本不会这样做!它只是给touchesEnded!所以如果有动作,我会至少在Android上有3分,但在iPhone上它的2分(触摸,在不同位置触摸)
接下来的事情是ACTION_MOVE和ACTION_UP不要在计算采样点的平均速度时会发生显着的时间间隔。
解决方案:在ACTION_UP上,如果有ACTION_MOVE滑动存储的所有秒数,以便发生ACTION_UP时发生ACTION_MOVE“发生”。不要把速度计算中的最终触点放在最后。现在像往常一样计算速度。
摘要
在Android上,如果您已经移动你的手指,你一个ACTION_UP之前得到ACTION_MOVE。并且ACTION_UP大致位于ACTION_MOVE的相同位置,看起来就好像最后的速度大致为0. iPhone不会这样做,iPhone不会为最后一次触摸提供触摸移动已终止(IE touch down,move finger,lift ,如果你在iPhone上做得足够快,你不会得到触摸的中间事件移动你的手指,就像你在Android上做的那样)。
的Android/iPhone等同的
- ACTION_UP = touchesEnded
- ACTION_DOWN =的touchesBegan
- ACTION_MOVE = touchesMoved
而且我发现在Android上有一些点历史记录功能。我没有使用这些。我在我自己的数组中存储触摸和时间戳。
你可以编辑这个,但参考事件?例如ACTION_UP – Ian