2009-05-24 7 views
2

Je me suis assuré que tous les superviews de mon UIImageView personnalisé et le UIImageView lui-même ont userInteractionEnabled = YES;Quelle peut être la raison pour laquelle ma sous-classe UIImageView ne reçoit aucun événement tactile?

Egalement dans la plume tous les affichages et sous-vues ont userInteractionEnabled = YES;

Mais pour une raison quelconque, ils se n'appelé quand je clique sur le UIImageView:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
NSLog(@"check!"); 
} 

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 
NSLog(@"other check"); 
} 

j'ai un UIView qui agit comme un regroupement pour certains sous-vues. Cela peut-il être un problème?

+0

touchesBegun doit être tactileBegan, mais je suppose que c'est juste une faute de frappe? – Kriem

Répondre

1

Il semble que vous ayez une faute de frappe: le nom du sélecteur correct est 'touchesBegan'. Ajoutez-vous cette vue par programmation ou par une plume?

+0

par programme. C'était une faute de frappe à SO. Corrigée! – Thanks

1

touchesBegun devrait être touchesBegan, mais je pense que c'est juste une faute de frappe?

Depsite que, touche habituellement ne pas venir à travers indique une UC stressée. Essayez de tester les performances de votre application avec Instruments.

+0

Oui, c'était une faute de frappe. corrigé ça! – Thanks

2

Ceci est juste une supposition - Y at-il un UIScrollView quelque part dans la hiérarchie de la vue? UIScrollViews ne transmet pas les événements tactiles comme les vues normales, vous devez le sous-classer et implémenter une méthode personnalisée touchesBegan. Vous pouvez trouver des informations à ce sujet here - c'est un problème qui m'a envoyé me gratter la tête et googler pendant plusieurs heures la première fois que je l'ai rencontré.

+0

quelle était la solution dans cette situation, pour désactiver l'interaction de l'utilisateur peut-être? – elliotrock

2

Après un certain temps je me suis le problème suivant:

J'ai eu un UIView que je l'habitude de regrouper certaines UIImageViews ensemble, afin que je puisse passer tous à la fois en proposant que UIView seulement. J'ai rendu le UIView 0.01 x 0.01 gros alors qu'il ne clipsToBounds. Lorsque j'ai cliqué sur les sous-vues qui dessinaient en dehors des limites de leur vue d'ensemble, l'UIView, aucun événement tactile n'a été reçu sur ces sous-vues. Je ne sais pas s'il y a eu des événements tactiles. Donc, si vous avez le même problème, assurez-vous que vos contacts se produisent sur une zone qui correspond à la vue d'ensemble. Dans mon cas, je viens de faire en sorte que le regroupement de UIView soit plus grand, ce qui rend la zone sensible au toucher plus grande. Après ça, ça a marché. Je me souviens un peu qu'Apple avait mentionné que dans la documentation quelque part, les sous-vues pouvaient dessiner en dehors de leurs aperçus, mais les événements tactiles ne seraient reconnus que s'ils se trouvaient dans le rectangle de l'aperçu.