Bon, puisque le NDA est en panne, nous allons célébrer en publiant certaines informations, allons-nous?
Une question que je vois posté un tirage au sort par les développeurs iPhone est "comment puis-je manipuler les robinets double?" Le problème est que le double tap appels touchesBegan: withEvent: à deux reprises. Si vous voulez avoir une méthode différente a appelé à un seul robinet puis un double-clic (en d'autres termes, si il ya un double-clic, vous ne voulez pas l'unique méthode pour robinet d'incendie), comment gérez-vous ?
La réponse réside dans la première utilisation performSelector withObject: afterDelay: pour appeler la méthode de saisie unique après un délai qui est assez courte pour ne pas être remarqué par l'utilisateur, mais assez longtemps pour que le deuxième robinet du robinet double arrivera avant qu'il ne fait exécute. Puis, quand le robinet double-entrée en touchesBegan: withEvent:, vous devez utiliser une méthode peu connue appelée NSObject cancelPreviousPerformRequestsWithTarget: sélecteur: objet: pour annuler la précédente unique robinet d'appel de méthode avant d'appeler la méthode du double-tap.
Heres un extrait de code qui montre comment gérer jusqu'à un robinet quadruple, avec chaque nombre d'entailles résultant en une méthode différente obtenir appelé.
Une question que je vois posté un tirage au sort par les développeurs iPhone est "comment puis-je manipuler les robinets double?" Le problème est que le double tap appels touchesBegan: withEvent: à deux reprises. Si vous voulez avoir une méthode différente a appelé à un seul robinet puis un double-clic (en d'autres termes, si il ya un double-clic, vous ne voulez pas l'unique méthode pour robinet d'incendie), comment gérez-vous ?
La réponse réside dans la première utilisation performSelector withObject: afterDelay: pour appeler la méthode de saisie unique après un délai qui est assez courte pour ne pas être remarqué par l'utilisateur, mais assez longtemps pour que le deuxième robinet du robinet double arrivera avant qu'il ne fait exécute. Puis, quand le robinet double-entrée en touchesBegan: withEvent:, vous devez utiliser une méthode peu connue appelée NSObject cancelPreviousPerformRequestsWithTarget: sélecteur: objet: pour annuler la précédente unique robinet d'appel de méthode avant d'appeler la méthode du double-tap.
Heres un extrait de code qui montre comment gérer jusqu'à un robinet quadruple, avec chaque nombre d'entailles résultant en une méthode différente obtenir appelé.
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
NSUInteger tapCount = [touch tapCount];
switch (tapCount) {
case 1:
[self performSelector:@selector(singleTapMethod) withObject:nil afterDelay:.4];
break;
case 2:
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(singleTapMethod) object:nil];
[self performSelector:@selector(doubleTapMethod) withObject:nil afterDelay:.4];
break;
case 3:
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(doubleTapMethod) object:nil];
[self performSelector:@selector(tripleTapMethod) withObject:nil afterDelay:.4];
break;
case 4:
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(tripleTapMethod) object:nil];
[self quadrupleTap];
break;
default:
break;
}
}
@end
Aucun commentaire:
Enregistrer un commentaire