Question

Je vais avoir un problème étrange où un contrôle personnalisé que je l'ai construit pour l'iPhone fonctionne parfaitement lors de la construction en mode débogage, mais ne fonctionne que partiellement lors de sa construction en mode de libération.

La vue principale wrapper est une sous-classe de UIView et contient une rangée de « boutons » qui sont ajoutés comme subviews. La classe de bouton personnalisé étend UIImageView et PRÉPONDÉRANTS les méthodes de contact avec les signatures suivantes:

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

Lors de la construction du code de débogage, tous les 4 de ces fonctions sont appelées au moment que vous attendez, avec une accumulation de libération, rien ne se passe. Je vous connecter chacun d'entre eux et je ne reçois pas les messages du journal (autre exploitation forestière fonctionne).

Une autre chose intéressante, je le touchesBegan / DEPLACE / méthodes surchargées dans la terminées classe de vue wrapper et ils fonctionnent très bien. J'ai essayé en commentant ces méthodes dans la classe d'emballage pour voir si elle avait un effet sur les boutons mais il n'a pas.

J'ai aussi essayé de changer la classe UIImageView être une sous-classe de UIButton à la place, mais ai le même problème il y a, y compris les événements comme touchUpInside. Ils travaillent dans le débogage, mais pas libérer.

J'ai essayé des recherches sur cette question ainsi que la gestion des événements général et suis venu les mains vides. Toutes les idées où regarder ensuite?

Était-ce utile?

La solution

J'ai finalement compris la question - l'emballage pour les éléments « bouton » avait une hauteur de 0. En mode débogage, l'application a compris que les boutons étaient touchés, même si elles ne sont pas dans la zone touchée de leur vue parent (clipsToBounds a été réglé par défaut sur nON si les éléments de bouton étaient encore parfaitement visibles), en mode de libération, pas tellement.

Espérons que cela peut aider à sauver des gens la tête et se gratter le temps de débogage que je devais passer par :) J'ai aussi posté à un bug chez Apple si nous espérons qu'il sera résolu un jour.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top