0

아래 코드를 사용하여 스 와이프 위치를 얻으려고 시도하지만 화면에서 스 와이프 한 위치와 상관없이 동일한 위치를 반환합니다.스 와이프 제스처의 위치를 ​​얻는 방법

CODE :

-(void) recognizeTapGesture : (UITapGestureRecognizer*)sender { 

    CGPoint event; 
    event = [sender locationInView: nil ]; 

    NSLog(@"Tap Detected (%f,%f) %lu",event.x,event.y,(unsigned long)sender.numberOfTouches); 
} 

-(void) recognizeLeftSwipeGesture : (UISwipeGestureRecognizer*)sender { 

    CGPoint event; 
    event = [sender locationInView: nil ]; 

    NSLog(@"Left Swipe Detected (%f,%f) %lu",event.x,event.y,(unsigned long)sender.numberOfTouches); 

} 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 

    _TapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(recognizeTapGesture:)]; 

    _LeftswipeGesture = [[UISwipeGestureRecognizer alloc] initWithTarget: self action:@selector(recognizeLeftSwipeGesture:) ]; 

    _LeftswipeGesture.direction = UISwipeGestureRecognizerDirectionLeft; 

    _LeftswipeGesture.cancelsTouchesInView = NO; 

    _TapGesture.cancelsTouchesInView = NO; 

    [[self window] addGestureRecognizer:_LeftswipeGesture]; 

    [[self window] addGestureRecognizer:_TapGesture]; 

    return YES; 
} 

출력 :

Tap Detected (286.500000,460.500000) 1 
Left Swipe Detected (0.000000,0.000000) 1 

가 슬쩍의 위치를 ​​찾기 위해,이 코드 충분하다. 객관적으로 스 와이프의 위치를 ​​찾는 방법을 알고 싶습니다.-c. 내가 누락 된 것이 있습니까? 터치 횟수가 항상 1 인 이유는 무엇입니까? 최소 터치 횟수를 이상으로 설정하면 스 와이프가 감지되지 않습니다.

+0

Tap Gesture에 대해 구현 한 코드를 표시하십시오. –

+0

@ Mr.UB, 나는 완전한 코드를 넣었다. 위 코드는 스 와이프 제스처의 위치를 ​​파악하기에 충분합니다. ** touchuchesBegan, touchesEnded 등을 처리하지 않았습니다. ** 또한 터치의 수는 항상 하나입니까? ** numberoftouchesrequired **를 2로 변경하면 감지되지 않습니다. –

+0

'event = [발신자 locationInView : nil];을'event = [발신자 locationInView : self.view];로 변경하고 어떤 일이 일어나는 지 봅니다. –

답변

0

정확히 왜 그런지는 모르겠지만 tapGesture는 창 수준에서 위치 정보를 가져 오는 반면 swipeGesture는보기 수준에서 위치 정보를 가져옵니다. 따라서 swipeGesture의 경우 위치 검색 기능이

event = [sender locationInView: currentviewController.view ];

얻으려면 currentviewcontroller이되고, 우리는 그것을 얻을 위의 코드를 사용하거나 UIViewController에있는 기능과 gesturerecognizer를 정의하고,

이 사용하는 함수를 만들 수 있습니다

event = [sender locationInView: self.view ];