Domanda

Ho impostato un UISwipeGestureRecognizer:

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

Un colpo fa muovere il giocatore nella direzione del colpo. Ho bisogno che il giocatore continui a muoverti, fino a quando il dito che ha fatto il colpo viene sollevato dallo schermo. Ho provato a usare il metodo toccato: ma richiede che un tocco non swiping venga fatto per primo. Come posso ottenere il tocco che ha reso il gesto di scorrimento? Come posso rilevare quando quel tocco viene sollevato dallo schermo?

È stato utile?

Soluzione 2

Dopo aver esaminato la documentazione di Apple, ho trovato questa proprietà di UigesturerEcognizer:

@property(nonatomic) BOOL cancelsTouchesInView

Impostarlo su NO Consente al View del ricevitore di gestire tutti i tocchi che fanno parte della sequenza multi-touch che il riconoscimento del gesto riceve.

Altri suggerimenti

So che sei già soddisfatto di una risposta a questa domanda, ma ho pensato di consigliarmi di usare un mognizzatore UipAngeSureuresure invece del gesto di scorrimento.

Con un riconoscimento del gesto di Pan, il messaggio viene inviato ripetutamente al selettore fino a quando l'utente smette di trascinare il dito, a quel punto il selettore viene chiamato ancora una volta, passando a 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.
    }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top