Fondamentalement ...Parent UIScrollView détecter les touches de l'enfant UIView
J'ai une sous-classe de UIScrollView que vous pouvez ajouter une cible et un sélecteur trop, qui se déclenché si un événement tactile est détecté dans la vue. J'utilise la vue de défilement comme une galerie d'images, et la touche dans la vue de défilement est utilisée pour fondre les composants HUD (UIToolbar, etc.):
@implementation TouchableScrollView
- (void)addTarget:(id)_target withAction:(SEL)_action
{
target = _target;
action = _action;
shouldRun = NO;
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
shouldRun = YES;
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
shouldRun = NO;
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
if(shouldRun)
{
shouldRun = NO;
[target performSelector:action];
}
}
@end
Je puis une autre coutume UIView ajouté en tant que sous-vue à ce qui a le jeu suivant (tous les deux que j'ai joué avec):
self.userInteractionEnabled = YES;
self.exclusiveTouch = YES;
et utilise les éléments suivants pour déclencher une animation:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
le problème est même lorsque le UIView personnalisé détecte le toucher et répond (en se retournant), le sélecteur UIScrollView est également déclenché, provoquant la disparition de tout.
S'il vous plaît aider, je suis totalement coincé ?!
Ok, j'ai réussi à résoudre cela d'une manière plutôt hacky (boooooo). J'ai juste ajouté une propriété à la sous-classe UIScrollView afin que vous puissiez définir shouldRun sur NO, ce qui signifie qu'il ne déclenchera jamais l'événement tactile UIScrollView lorsque l'autre vue enfant est touchée :) –