web-dev-qa-db-ja.com

iosUIPanGestureRecognizerポインターの位置

UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(pan:)];
[self addGestureRecognizer:panRecognizer];

- (void)pan:(UIPanGestureRecognizer *)gesture {
    NSLog(@"%f", [gesture translationInView:self].x);
}

上記のコードは現在のパンの相対位置をログに記録しますが、現在のビューの絶対位置を取得するにはどうすればよいですか?

UIImageViewをユーザーの指のある場所にスライドさせたいだけです。

20
Jacksonkr

translationInViewは、ビュー内のパンの位置(xの値)ではなく、パンの移動(xがどれだけ変化したか)を示します。パンの位置が必要な場合は、メソッドlocationInViewを使用する必要があります。

次のように、ビューに関連する座標を見つけることができます。

- (void)pan:(UIPanGestureRecognizer *)gesture {
    NSLog(@"%f", [gesture locationInView:self].x);
}

またはスーパービューと比較して:

- (void)pan:(UIPanGestureRecognizer *)gesture {
    NSLog(@"%f", [gesture locationInView:self.superview].x);
}

またはウィンドウに対して:

- (void)pan:(UIPanGestureRecognizer *)gesture {
    NSLog(@"%f", [gesture locationInView:self.window].x);
}
34
sch

スイフト

ジェスチャーのself.viewに対する相対位置(CGPoint):

print( gesture.locationInView(self.view) )
1
budidino

このような簡単な方法は、タッチのxとyを取得して追跡することだと思います。2つのポイント(たとえばX:230 Y:122)ができたら、UIScrollビューのスクロールをxとyに設定します。 。

どうやってこの答えにたどり着いたのか正確にはわかりません...役に立たない場合は、私を反対票を投じないでください。私はまだ初心者ですD:

0
Sirens