2010-10-29 14 views
1

je 2 UIImageViews foo1, foo2 qui ne sont pas qui se croisent, et j'ai 3 fonctions touchesBegan, touchesMoved, touchesEndedtouchesMoved détection UIView

- (void) touchesMoved:(NSSet *) touches withEvent:(UIEvent *) event 
{ 
    UITouch *touch = [touches anyObject]; 

     if (foo1 == [touch view]){ 
     NSLog(@"foo1"); 
     }  

     if (foo2 == [touch view]){ 
     NSLog(@"foo2"); 
     }  
} 

Je tiens contact sur foo1 et déplacez le doigt à foo2 , mais à partir de nslog, je reçois un message foo1.

Y a-t-il une possibilité de déterminer en touchesMoved la fonction lorsque le contact se poursuit sur foo 2?

Merci

Répondre

0

Cela ne fonctionne pas de cette façon par défaut. Une fois qu'une vue a "capturé" une touche (en d'autres termes, une fois qu'elle a été testée pour être à l'intérieur de cette vue), le toucher "suivra" cette vue jusqu'à ce qu'elle soit relâchée, même si l'emplacement du toucher dépasse les limites de la vue.

(je suppose qu'il peut être possible de modifier ce comportement prioritaire subtile du -pointInside:withEvent: et/ou -hitTest:withEvent: méthodes, mais je ne peux pas vous dire à quel point le dessus de ma tête, et je suis n'est pas sûr que ce soit possible avec ces moyens.)