0

我有这个代码来拖动一个 imageView:

在接触开始:

CGPoint point = [touch locationInView:self];
[imageView setCenter:point];

在 touchmoved:

CGPoint point = [touch locationInView:self];
[imageView setCenter:point];

此代码允许在我的手指下拥有 imageview 并将其从其中心移动。但我想要一些东西,让我不仅可以从 imageview 的中心拖动一个 imageview,还可以从 imageview 的另一个点拖动它......如果我触摸这个 imageView 就不能拖动它......你能帮我吗?

4

2 回答 2

0

您需要弄清楚触摸是如何移动的,而不是仅仅将中心点设置为触摸点。

将接触点存储在变量中。

在接触开始...

storedPoint = [touchLocationInView:self];

然后在touchesMoved...

CGPoint currentPoint = [touch locationInView:self];

CGPoint vector = CGPointMake(currentPoint.x - storedPoint.x, currentPoint.y storedPoint.y);

[imageView setCenter:CGPointMake(imageView.center.x + vector.x, imageView.center.y + vecotr.y)];

storedPoint = currentPoint;

反正是这样的。

要忽略触摸,您可以在 touchesBegan 中说...

if (!CGRectContainsPoint(imageView.frame, [touch locationInView:self])
{
    //ignore touch
    trackTouches = NO;
}

trackTouches = YES;

(trackTouches 是一个类变量)

然后在 touchesMoved 中仅在 trackTouches == YES 时执行操作。

于 2012-11-13T16:00:29.313 回答
0

您需要: A) 测试触摸是否在 imageView B) 计算触摸与 imageView 中心之间的差异。一旦您知道 x/y 差异,您就可以做一些简单的数学运算,以相对于用户触摸的 imageView 上的位置移动中心。

这个网站上有很多关于 A 的例子,B 应该是直截了当的。

于 2012-11-13T16:04:01.690 回答