ACB ha citato il riferimento UIGestureRecognizer
. Per rendere un po 'più concreto, si supponga di avere una vista con un sistema di riconoscimento gesto pan attaccato, e si dispone di questi metodi nel controller della vista:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"touchesBegan");
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"touchesMoved");
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"touchesEnded");
}
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"touchesCancelled");
}
- (IBAction)panGestureRecognizerDidUpdate:(UIPanGestureRecognizer *)sender {
NSLog(@"panGesture");
}
E naturalmente il gesto riconoscitore padella è configurato per inviare il panGestureRecognizerDidUpdate:
Messaggio.
Ora supponiamo di toccare la vista, muovere il dito abbastanza da riconoscere il gesto panoramica, quindi sollevare il dito. Cosa stampa l'app?
Se il sistema di riconoscimento gesto ha cancelsTouchesInView
insieme a YES
, l'applicazione registrerà questi messaggi:
touchesBegan
touchesMoved
touchesCancelled
panGesture
panGesture
(etc.)
Si potrebbe ottenere più di un touchesMoved
prima della cancellazione.
Quindi, se si imposta cancelsTouchesInView
su YES
(impostazione predefinita), il sistema annullerà il tocco prima di inviare il primo messaggio dal rilevatore di gesti e non sarà possibile ricevere altri messaggi relativi al tocco per quel tocco.
Se il sistema di riconoscimento gesto ha cancelsTouchesInView
insieme a NO
, l'applicazione registrerà questi messaggi:
touchesBegan
touchesMoved
panGesture
touchesMoved
panGesture
touchesMoved
panGesture
(etc.)
panGesture
touchesEnded
Quindi, se si imposta cancelsTouchesInView
-NO
, il sistema continua l'invio di messaggi al tocco a favore dei gesto touch, interlacciato con i messaggi del riconoscitore di gesti. Il tocco termina normalmente invece di essere annullato (a meno che il sistema non annulli il tocco per qualche altro motivo, come il tasto home premuto durante il tocco).
Grazie! Quando si imposta cancelsTouchesInView su No, l'evento verrà annullato scoppiando a destra? – jebberwocky
Non capisco cosa significhi "cancellare scoppiare". –