La comparaison d'une UITouch emplacement de UIImageView rectangle
J'ai le code suivant pour déterminer si une touche est à l'intérieur d'une image vue dans ma cellule de tableau. Toutefois, il ne fonctionne pas. J'ai comparé les deux avec CGRectContainsPoint toutefois, il ne fonctionne pas. Voici le code:
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
//Declare the touch and get it's location
UITouch *touch = [touches anyObject];
CGPoint touchLocation = [touch locationInView:self];
if (CGRectContainsPoint(myImageView.frame, touchLocation))
{
NSLog(@"Tapped image view");
}
}
Merci pour l'aide!
Vous devez vous connecter pour publier un commentaire.
Veuillez être plus précis.
Pourquoi ne pas examiner chaque toucher, et non pas simplement d'un hasard* choisir d'entre eux?
*La documentation de
anyObject
dit que vous ne sont pas garantis dans lequel il vous donnera. Vous n'êtes même pas garanti qu'il sera aléatoire; il pourrait être le même objet à chaque fois. La Loi de Murphy dit que, si c'est aléatoire ou pas, ça sera la bonne.Votre
frame
est dans votre superview du système de coordonnées;[touch locationInView:self]
retourne le point de contact votre système de coordonnées. Vous souhaitez tester dansbounds
, qui est dans votre système de coordonnées. La documentation explique la différence.CGPoint touchLocation = [touch locationInView:self]; if (CGRectContainsPoint(myImageView.frame, touchLocation))
ne fonctionne que simyImageView
est une conséquence directe de sous-vue deself
CGRect frameRelativeToView = [myImageView convertRect:myImageView.bounds toView:self]
Le problème, c'est que vous avez besoin de les appeler [touch locationInView:myImageView] pour obtenir le point à l'image des vues du système de coordonnées. Ensuite, faites votre check pour voir si c'est dans le cadre.
de l'écrire dans le toucher déplacé de l'événement. merci
Rappelez-vous que lorsque vous demandez à une touche pour les locationInView:, vous obtenez un point par rapport à ce point de vue de l'image. Donc, en supposant que l'extrait de code que vous avez donné a été contenue dans une sous-classe de UIViewController, vous devriez vous demander pour
Qui vous donnera un point par rapport à votre point de vue. La raison pour laquelle vous voulez un point par rapport à votre vue actuelle est parce que le cadre de votre affichage de l'image est aussi par rapport à son parent de la vue de la même vue. Donc, maintenant, il doit travailler.