UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(pan:)];
[self addGestureRecognizer:panRecognizer];
- (void)pan:(UIPanGestureRecognizer *)gesture {
NSLog(@"%f", [gesture translationInView:self].x);
}
上記のコードは現在のパンの相対位置をログに記録しますが、現在のビューの絶対位置を取得するにはどうすればよいですか?
UIImageView
をユーザーの指のある場所にスライドさせたいだけです。
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);
}
スイフト
ジェスチャーのself.view
に対する相対位置(CGPoint
):
print( gesture.locationInView(self.view) )
このような簡単な方法は、タッチのxとyを取得して追跡することだと思います。2つのポイント(たとえばX:230 Y:122)ができたら、UIScrollビューのスクロールをxとyに設定します。 。
どうやってこの答えにたどり着いたのか正確にはわかりません...役に立たない場合は、私を反対票を投じないでください。私はまだ初心者ですD: