2009-08-21 6 views
1

J'ai un UIControl (ou UIView, peu importe lequel) et ceci est couvert par un autre UIControl. L'autre UIControl réagit bien aux événements tactiles. Cependant, l'UIControl sous-jacent a également besoin de connaître le toucher et s'il était réellement "sur le" ou pas du point de vue de l'utilisateur. Le revêtement UIControl est partiellement transparent. Comment puis-je attraper cette touche sur l'UIControl sous-jacent?Comment un UIControl couvert ou UIView peut-il être informé d'un événement tactile qui s'est terminé au-dessus?

Répondre

1

Je pense qu'il ya des façons couple que vous pourriez aller à ce sujet ...

Vous pouvez passer l'événement touche à l'autre contrôle ... mais je ne pense pas que ça marche si vous déplacer la vue supérieure sur l'autre vue? Vous devrez peut-être expérimenter.

La façon plus facile pourrait être juste pour voir si le rect inférieur contient le point de contact:

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent*)event { 
    UITouch *touch = [[event allTouches] anyObject]; 
    CGPoint touchLocation = [touch locationInView:self]; 
    if (CGRectContainsPoint(lowerView.frame, touchLocation)) { 
     <doyourthing> 
} 

Je ne me souviens pas désinvolture, mais vous pourriez avoir besoin de convertir les coordonnées de la vue entre les deux points de vue?!? ou vous pouvez demander la vue elle-même avec - (BOOL) pointInside: (CGPoint) point avecEvent: (UIEvent *) événement

Questions connexes