0

imageView をドラッグする次のコードがあります。

連絡を取り始めた:

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

触れて動いた:

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

このコードを使用すると、イメージビューを指の下に置いて、その中心から移動できます。しかし、イメージビューの中心からだけでなく、イメージビューの別のポイントからもイメージビューをドラッグできるようにしたいのですが...このimageViewの外に触れてもドラッグしないでください...助けてもらえますか?

4

2 に答える 2

0

A) タッチが imageView にあることをテストします。B) タッチと imageView の中心との差を計算します。x/y の違いがわかったら、簡単な計算を行って、ユーザーがタッチした imageView 上の場所に相対的に中心を移動できます。

このサイトには A の例がたくさんありますが、B はわかりやすいはずです。

于 2012-11-13T16:04:01.690 に答える
0

中心点をタッチ ポイントに設定するだけでなく、タッチがどのように移動したかを調べる必要があります。

タッチ ポイントを変数に格納します。

タッチで始まりました...

storedPoint = [touchLocationInView:self];

その後、タッチで移動しました...

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 に答える