2010-06-26 4 views
1

Je suis en train de détecter contact sur une zone particulière de l'écran où se robinets d'utilisateur que je peux faire quelque chose comme ceci:toucher la détection sur une zone particulière de l'écran

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 

    UITouch *touch = [touches anyObject]; 
    CGPoint point=[touch locationInView:myView]; 
    NSLog(@"pointx: %f pointy:%f", point.x, point.y); 
    if (CGRectContainsPoint(CGRectMake(5, 5, 40, 130),point)); 
    { 
     NSLog(@"touched here");      
    } 
} 

Mais ce message est affiché même quand je touche n'importe où sur l'écran. Je veux que ce soit affiché seulement quand je touche myView.

J'ai essayé de régler point.x et point.y à des nombres différents, mais cela ne fonctionne pas? Comment puis-je résoudre ce problème?

Répondre

1

Le code cité renvoie toujours YES parce que vous demandez le point dans la vue en question, car les points peuvent avoir un emplacement négatif dans une vue. Pour obtenir seulement des touches dans votre vue, utilisez:

if ([touch view] == myView) 
+0

Si une réponse fonctionne, veuillez l'accepter. Cela encouragera les autres à répondre à vos questions aussi. – RunLoop

+0

ne fonctionne pas? malso myview peut-il être une imageview ou une webview ?? essayé à la fois ci-dessus mais ne fonctionne pas – hemant

+0

si myView est un UIImageView, vous devez ajouter la ligne suivante: myView.userInteractionEnabled = YES; – RunLoop

Questions connexes