2011-06-24 13 views
43

mam pogląd i zastosował UIPanGestureRecogniser do tego widoku:Wykrywanie Pan Gest Koniec

UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panAnim:)]; 
[sliderView addGestureRecognizer:panGesture]; 
[panGesture release]; 

mogę wykryć i przetworzyć gest dobrze. Jednak chciałbym rozpocząć inną metodę po zakończeniu gestu.

Wiem, że istnieją dwie metody, które umożliwiają tego rodzaju wykrywanie. touchesEnded i touchesCancelled Jednak odkryłem, że touchesCancelled zostaje wywołane, gdy tylko dotyk stanie się gestem, tj. Poruszę palec na tyle, aby zagwarantować wywołanie gestu i rzadko, jeśli w ogóle, zostanie wywołany.

Chcę móc przesuwać w lewo/prawo, a następnie inicjować kolejne wywołanie funkcji po zakończeniu gestu. Jak mam to zrobic?

Odpowiedz

114

Zdarzenie końca gestu pan można wykryć, sprawdzając jego stan za pomocą UIGestureRecognizerStateEnded.

Sprawdź za pomocą poniższego kodu.

-(void) panAnim:(UIPanGestureRecognizer*) gestureRecognizer 
{ 
    if(gestureRecognizer.state == UIGestureRecognizerStateEnded) 
    { 
     //All fingers are lifted. 
    } 
} 

z dokumentacji firmy Apple

Gest panoramowanie jest ciągła. To rozpoczyna się (UIGestureRecognizerStateBegan) , gdy dozwolona jest minimalna liczba palców (minimumNumberOfTouches) na przeniesiona na tyle, aby można ją było uznać za panoramę. Zmienia się (UIGestureRecognizerStateChanged), gdy palec przesuwa się, podczas gdy co najmniej minimalna liczba naciśnięć zostanie naciśnięta w dół. Kończy się (UIGestureRecognizerStateEnded), gdy wszystkie palce są uniesione.

Read more

+0

okrzyki kolego! Dokładnie to, czego potrzebowałem! –

+0

@Daniel Hanly: Cieszę się, że wiem, że pomogę :) – Jhaliya

11

Pan wydarzenie koniec gest może być wykryta przez sprawdzenie stanu pracy To z UIGestureRecognizerStateEnded lub UIGestureRecognizerStateCancelled lub UIGestureRecognizerStateFailed

Odjazd z poniższym kodzie.

-(void) panGesture:(UIPanGestureRecognizer*) gestureRecognizer 
    { 
    if(gestureRecognizer.state == UIGestureRecognizerStateEnded || gestureRecognizer.state == UIGestureRecognizerStateFailed || gestureRecognizer.state == UIGestureRecognizerStateCancelled) 
      { 
       //code what you want. 
      } 
    } 
5

Powyższe odpowiedzi są poprawne, to jest po prostu zaktualizowany dla Swift.

Swift 3:

func panGesture(recognizer: UIPanGestureRecognizer) { 
    if recognizer.state == .ended { 
     // Do what you want 
    } 
}