2012-03-12 9 views
16
UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(pan:)]; 
[self addGestureRecognizer:panRecognizer]; 

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

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

私は単に、ユーザーの指がどこにでもあるようにUIImageViewをスライドさせたいだけです。

+0

あなたは* *「私はね、ビューの絶対位置」とはどういう意味ですか? – sch

答えて

27

translationInViewは、パンの移動量(どのくらいのxが変更されたか)を表示し、ビュー内のパンの位置(xの値)は表示しません。パンの位置が必要な場合は、方法locationInViewを使用する必要があります。次のように

あなたは、ビューに比較的座標を見つけることができます:

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

、または比較的ウィンドウへ:

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

'self'の代わりに' UIGestureRecognizer'の 'view'プロパティを使うほうがいいですか?ジェスチャー認識機能を動かすことができます。また、ウィンドウの位置については、 'nil'を渡すだけで十分です。 –

0

Iスーパーへ

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

、または比較的にこのようなものの簡単な方法は、タッチのxとyを取得し、それを追跡することですay X:230 Y:122)、UIScrollビューのスクロールをxとyに設定します。

0

スウィフト

相対位置(:それはダウン私に投票しない役に立たないなら

私はまだのnoobのDだ...私はこの答えになった正確にどのようにわからないんだけどself.viewへのあなたのジェスチャーのCGPoint):

print(gesture.locationInView(self.view)) 
関連する問題