检测iphone上的特殊触控

And*_*obs 3 cocoa-touch

我问自己是否有在线示例,其中包括如何在触摸手势中检测形状.

例如一个矩形或一个圆形(或更复杂的一颗心......)

或者确定滑动的速度(随着时间的推移(就像我将我的iphone刷到50英里每小时))

小智 8

对于非常简单的手势(水平与垂直滑动),计算两次触摸之间的x和y差异.

dy = abs(y2 - y1)
dx = abs(x2 - x1)
f = dy/dx
Run Code Online (Sandbox Code Playgroud)

接近零的f是水平滑动.f接近1是对角线滑动.并且非常大的f是垂直滑动(请记住,dx可能为零,因此上述不会产生所有x和y的有效结果).

如果你对速度感兴趣,毕达哥拉斯可以提供帮助.两次触摸之间的距离长度为:

l = sqrt(dx*dx + dy*dy)
Run Code Online (Sandbox Code Playgroud)

如果触摸发生在时间t1和t2,则速度为:

tdiff = abs(t2 - t1)
s = l/tdiff
Run Code Online (Sandbox Code Playgroud)

由您来决定您解释为快或慢的s值.

您可以将此方法扩展为更复杂的数字,例如,您的方形可以是水平/垂直/水平/垂直滑动,其中开始/结束点在前一次滑动停止的位置.

对于更复杂的数字,使用理想化的形状可能更好.可以将多边形形状视为理想形状,并检查是否有一系列触摸

  1. 距离pologyon轮廓上最近点的距离不是太远
  2. 所有触摸都沿着多边形的轮廓沿着相同的方向.

你可以从那里进一步改进.