Dalla lettura di UIGestureRecognizer Class Reference è implicito che l'API gestirà la priorità di tocchi e controlli gestuali per te, assicurandosi che il tuo touchesBegan
e metodi correlati non vengano richiamati nella vista a meno i riconoscitori dei gesti non sono riusciti prima:Come assegnare priorità ai riconoscitori di gesti e ai tocchi in un UIView
Una finestra consegna gli eventi di tocco a un rilevatore di gesti prima di consegnarli alla vista sottoposta a test hit collegata al riconoscimento di gesture. Generalmente, se un riconoscitore di gesti analizza il flusso di tocchi in una sequenza multi-touch e non riconosce il suo gesto, la vista riceve il pieno complemento di tocchi. Se un riconoscitore di gesti riconosce il suo gesto, i restanti tocchi per la vista vengono annullati.
Ho aggiunto un gesto di scorrimento alla mia vista e funziona. Tramite alcune registrazioni, quando eseguo un singolo passaggio, il metodo riporta come tale. Tuttavia, il mio metodo è anche segnalazione tramite il relativo registro, nonostante che il metodo touchesCancelled
sia, come previsto, anche ricevendo un messaggio.
Voglio e mi aspetto che il gesto riconosca per impedire touchesBegan
o touchesMoved
di essere chiamato.
Quindi la mia domanda è: per il riconoscitore di gesti infatti ritarda i tocchi in base al suo stato, è necessaria una configurazione aggiuntiva? I documenti non suggeriscono nient'altro se necessario.
La mia configurazione è semplice:
swipeUpTwoFinger=[[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(doubleSwipeUp:)]autorelease];
swipeUpTwoFinger.direction=UISwipeGestureRecognizerDirectionUp;
swipeUpTwoFinger.numberOfTouchesRequired=2;
[self addGestureRecognizer:swipeUpTwoFinger];
Ho anche provato questo test per assicurarsi che un sistema di riconoscimento non è riuscito prima della trasformazione con touchesBegan
(questo test dovrebbe non essere necessaria se si crede ciò che i documenti dicono sopra), ma la touchesBegan
sta ancora elaborando la linea di log dopo questo test:
if (swipeUpTwoFinger.state==UIGestureRecognizerStateFailed)
infatti ho appena scoperto che non è abilitato di default. Grazie. – johnbakers