Interface Builder me permettra seulement de raccorder de tels événements pour un bouton. Mais comme en HTML, je veux juste avoir un UIImageView vide où - dès que l'utilisateur tape dessus - une méthode est invoquée. J'espère qu'il y a une façon de faire sympa par programme, ce que je ne connais pas.Comment est-ce que je peux lier par programme un UIView ou UIImageView avec un événement comme "retouche à l'intérieur"?
MISE À JOUR:
Dans mon View Controller qui crée le UIImageView j'ai essayé de le faire:
SEL actionSelector = @selector(doSomethingWhenImageIsTouched:);
[self.myUIImageView addTarget:nil action:actionSelector forControlEvents:UIControlEventTouchUpInside];
Le compilateur me donne un avertissement, que UIImageView ne peut pas répondre à addTarget: ... ce dois-je faire pour que cela fonctionne avec un UIImageView. Je vois dans les docs que UIImageView n'hérite pas de UIControl, mais addTarget: fait partie de UIControl.
MISE À JOUR:
J'ai fini par créer un UIButton après la création du UIImageView. Ensuite, je définis le cadre de ce bouton sur le cadre de l'UIImageView, et alpha à 0.1f. Pour une raison quelconque, cela ne fonctionnera pas si alpha est 0.0f. Et puis, j'ai fait ce cool addTarget: chose ...
Il serait plus approprié d'appeler les méthodes touchesBegan ou touchEnded et de vérifier la vue touchée là. – lostInTransit
@lostInTransit - C'est ce que j'ai fait récemment. Fonctionne comme un charme. Peut-être pourriez-vous en faire une réponse? – Kriem
En ce qui concerne l'alpha de 0.1, hitTest: withEvent: ignore les vues qui sont cachées, ont désactivé l'interaction utilisateur ou ont un alpha inférieur à 0.1 (voir hitTest sous UIView class reference) – progrmr