2010-08-06 8 views
5

ho creato un UISwipeGestureRecognizer:rilevare quando il dito solleva dopo un UISwipeGesture [Recognizer]

UISwipeGestureRecognizer *swipe = [[UISwipeGestureRecognizer alloc] initWithTarget:delegate action:@selector(handleSwipeGesture:)]; 
swipe.direction = UISwipeGestureRecognizerDirectionUp; 
[self addGestureRecognizer:swipe]; 
[swipe release]; 

un colpo fa muovere il giocatore in direzione del colpo. Ho bisogno che il giocatore continui a muoversi, finché il dito che ha fatto lo swipe non è stato sollevato dallo schermo. Ho provato a usare il metodo touched End: ma richiede che prima venga effettuato un tocco non a sfioramento. Come posso ottenere il tocco che ha fatto il gesto di scorrimento? Come posso rilevare quando quel tocco viene sollevato dallo schermo?

risposta

1

Dopo aver guardato attraverso la documentazione di Apple, ho trovato questa proprietà di UIGestureRecognizer:

@property(nonatomic) BOOL cancelsTouchesInView 

Impostazione al NO permette al ricevitore vista maniglia tutti i tocchi che fanno parte della sequenza multi-touch il sistema di riconoscimento gesto riceve.

5

So che sei già soddisfatto di una risposta a questa domanda, ma ho pensato di poter consigliare l'utilizzo di un UIPanGestureRecognizer invece del gesto di scorrimento.

Con un sistema di riconoscimento gesto pan, il messaggio viene inviato al selettore ripetutamente fino a quando l'utente interrompe il trascinamento il dito, a questo punto il selettore è chiamato ancora una volta, il superamento di un gesture.state di UIGestureRecognizerStateEnded. Esempio:

- (void)panGesture:(UIPanGestureRecognizer *)gesture { 
    if (gesture.state == UIGestureRecognizerStateEnded) { 
     CGPoint translation = [gesture translationInView:self.view]; 
     //This contains the total translation of the touch from when it 
     //first recognized the gesture until now. 
     // 
     //e.g (5, -100) would mean the touch dragged to the right 5 points, 
     //and up 100 points. 
    } 
} 
+2

Sotto la lingua Swift, questo cambia a 'if (gesture.state == UIGestureRecognizerState.Ended)' 'o semplicemente se (gesture.state == .Ended)'. – Troy

Problemi correlati