如何跟踪触摸矢量?

时间:2010-05-09 15:47:10

标签: iphone

我需要计算拖动触摸的方向,以确定用户是在拖动屏幕还是向下拖动屏幕。

其实很简单吧?但是:

1)手指向下,你得到-touchesBegan:withEvent:called

2)必须等到手指移动,并且-touchesMoved:withEvent:被调用

3)问题:此时判断用户是否向上或向下拖动都很危险。

我的想法:检查时间并累积计算向量,直到可以确定触摸的方向。

容易吗?不。想想看:如果用户在同一个位置按住手指5分钟,但那么决定向上或向下移动怎么办?砰!你的代码会失败,因为当手指没有真正移动时,它试图确定触摸的方向。

问题2:当手指蹲下并停留在同一个位置几秒钟,因为用户有点风,想着现在要做什么,你会得到很多-touchesMoved:withEvent:电话很可能,但触摸位置的变化很小。

所以我的下一个想法是:在-touchesMoved:withEvent:中进行积累,但是只有在超过某个移动阈值的情况下。

我敢打赌你有更好的概念吗?

1 个答案:

答案 0 :(得分:1)

如果您只是在谈论检测滑动,那么在OS 3.2中,Apple推出了gesture recognizers以便在iPad应用程序中使这种事情变得更容易。您还可以为其他类型的手势(如长拖动)编写自己的识别器,操作系统可以完成大部分繁重工作,并通知您“有趣的时刻”。

根据some reports,看起来它们将在4.0中并可供iPhone使用。