2012-03-12 7 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를 얻고 그것을 추적하는 것이고, 일단 그것이 2 포인트 (s ay X : 230 Y : 122) UIScroll보기의 스크롤을 x 및 y로 설정합니다.

0

스위프트

상대 위치 (: 그것은 아래로 나에게 투표하지 않는 도움이되지 있다면

나는 여전히 멍청한 놈 D입니다 ... 나는이 대답에 도착 정확히 어떻게 잘 모르겠어요 당신의 제스처 CGPoint) self.view에 :

print(gesture.locationInView(self.view))