J'essaie d'intercepter toute activité (c'est-à-dire touche) qui se produit dans toute mon application. En d'autres termes, j'essaie d'être averti de tout événement tactile qui se produit dans mon UIView principal, contenant le reste de mes contrôles. Pour ce faire, je pensais que la méthode UIView -hitTest: withEvent: était une bonne solution. Cependant, quand je NSLog dans cette méthode redéfinie avant d'appeler [super hitTest: ... withEvent: ...], je vois qu'il est appelé 3 fois pour n'importe quel contact que je fais, et je ne vois aucune différence dans l'événement que je reçois chaque fois qu'il est appelé.-hitTest de UIView: withEvent: appelé trois fois?
Voici comment est mis en œuvre la méthode dans la vue principale de ma demande:
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
NSLog(@"hitTest:withEvent called :");
NSLog(@"Event: %@", event);
NSLog(@"Point: %@", NSStringFromCGPoint(point));
NSLog(@"Event Type: %d", event.type);
NSLog(@"Event SubType: %d", event.subtype);
NSLog(@"---");
return [super hitTest:point withEvent:event];
}
Et voici ce que je NSLog pour une touche unique à ce point de vue:
2010-11-29 14:09:26.892 Application[68818:207] hitTest:withEvent called :
2010-11-29 14:09:26.892 Application[68818:207] Event: <UITouchesEvent: 0x5716d60> timestamp: 37935.2 touches: {(
)}
2010-11-29 14:09:26.892 Application[68818:207] Point: {173, 498}
2010-11-29 14:09:26.892 Application[68818:207] Event Type: 0
2010-11-29 14:09:26.892 Application[68818:207] Event SubType: 0
2010-11-29 14:09:26.893 Application[68818:207] ---
2010-11-29 14:09:26.893 Application[68818:207] hitTest:withEvent called :
2010-11-29 14:09:26.893 Application[68818:207] Event: <UITouchesEvent: 0x5716d60> timestamp: 37935.2 touches: {(
)}
2010-11-29 14:09:26.893 Application[68818:207] Point: {173, 498}
2010-11-29 14:09:26.893 Application[68818:207] Event Type: 0
2010-11-29 14:09:26.893 Application[68818:207] Event SubType: 0
2010-11-29 14:09:26.893 Application[68818:207] ---
2010-11-29 14:09:26.893 Application[68818:207] hitTest:withEvent called :
2010-11-29 14:09:26.894 Application[68818:207] Event: <UITouchesEvent: 0x5716d60> timestamp: 37944.9 touches: {(
)}
2010-11-29 14:09:26.894 Application[68818:207] Point: {173, 498}
2010-11-29 14:09:26.894 Application[68818:207] Event Type: 0
2010-11-29 14:09:26.894 Application[68818:207] Event SubType: 0
2010-11-29 14:09:26.894 Application[68818:207] ---
Comment pourrais-je faire une différence entre ces trois notifications afin de déclencher l'action que je veux faire qu'une seule fois pour un seul contact?
Merci d'avance!
Toujours trouver une solution propre à cela? J'ai le même problème. L'évaluation du temps semble fonctionner, mais pourrait être facilement sensible aux modifications du SDK dans le futur. –
une chance sur pourquoi cela arrive? J'essaie de comprendre moi-même – prostock
Des progrès sur ce problème? –