Prévenir les parents de la vue à partir de la réception d'événement tactile après la vue enfant agit sur lui

Je vais avoir un problème avec le répondeur de la chaîne des événements sur une application iOS.

Le problème est le suivant, j'ai un ensemble de sous-vues (bulles) sur une plus grande vue (carré) et je veux être en mesure de montrer un certain point de vue si je tape sur les touches, cependant si je tape n'importe où ailleurs, je veux le même point de vue à cacher.

Le problème est quand je me tape une bulle, les deux points de vue (enfant et parent) sont de déclenchement, comment puis-je éviter cela?

Si l'enfant a déjà agi sur un événement tactile ne pourrait-il pas être la fin de celui-ci?

Mes Bulles sont reconnaissant le Robinet geste avec UITapGestureRecognizer alors que la vue parent (carré) utilise touchesBegan: méthode

Ce graphique explique ma configuration actuelle avec plusieurs bulles:

Prévenir les parents de la vue à partir de la réception d'événement tactile après la vue enfant agit sur lui

Code:

@implementation Bubble
...
-(id) initWithFrame: (CGRect) frame {
    UITapGestureRecognizer *singleFingerDTap = [[UITapGestureRecognizer alloc]
                                                initWithTarget:self action:@selector(handleSingleTap:)];
    singleFingerDTap.numberOfTapsRequired = 1;
    [self addGestureRecognizer:singleFingerDTap];

}

-(void) handleSingleTap {
NSLog(@"Bubble tapped, show the view");
}

pour le Carré

@implementation Square
...
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"square touched, lets hide the view");
}

Après un Robinet, je vois les deux NSLogs sur la console

pls inclure le code
exemple de code inclus

OriginalL'auteur perrohunter | 2012-10-09