使用touchesMoved沿偏移矢量/ delta拖动对象?

时间:2011-02-22 01:39:03

标签: iphone objective-c cocoa-touch ios

在touchesMoved方法中,屏幕上的对象沿拖动触摸向量移动的算法是什么?例如,如果我在我的对象下面触摸(Y> object.y),然后向上拖动,我希望对象沿着我手指移动的相同向量从其当前的x,y位置移动。

目前我的工作是拖动动作将我的物体扣到我手指的位置,但有时我的手指会碰到屏幕的边缘,然后才能正确定位物体。

如果我知道我的“触地位置”和“当前触摸位置”,确定移动位置object.position的数学是什么?

2 个答案:

答案 0 :(得分:1)

我会调查UIPanGestureRecognizer。当我想要完成你所描述的内容时,我会使用它。

这是我以前学习的内容,但后来以其他形式进一步了解: http://www.cocoanetics.com/2010/11/draggable-buttons-labels/

祝你好运!

答案 1 :(得分:1)

我希望你已经收到了自己想出的答案,但是。

假设您的对象的左上角(ULC)位于Object.XObjectY。 假设CGPoint返回的touchsBeganTouch.XTouch.Y

偏移量(Delta)将为:

  • Delta.X = Touch.X - Object.X
  • Delta.Y = Touch.Y - Object.X

touchesMoved返回的每个点中减去这些,你的ULC应该按照你的预期移动,而不是贴在你的手指上。

祝你好运。