Pregunta

Estoy teniendo un problema extraño donde un control personalizado que he construido para el iPhone funciona perfectamente cuando se construye en modo de depuración, pero sólo funciona parcialmente cuando se construyó en modo de lanzamiento.

La vista de envoltura principal es una subclase de UIView y contiene una fila de "botones" que se agregan como subvistas. La clase botón personalizado se extiende UIImageView y es reemplazar los métodos táctiles con las siguientes firmas:

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

Cuando la construcción de código de depuración, todos los 4 de estas funciones se llaman en los momentos que se pueden esperar, con una versión de lanzamiento, no pasa nada. He registro en cada uno de ellos y ahora no recibo ningún mensaje de registro (otro registro está funcionando).

Otra cosa interesante, tengo el touchesBegan / movido / métodos terminados se reemplaza en la clase de vista envoltorio y que están funcionando bien. He intentado comentando esos métodos en la clase de contenedor para ver si tenía un efecto sobre los botones pero no fue así.

También he intentado cambiar la clase UIImageView ser una subclase de UIButton lugar, pero estoy teniendo el mismo problema existe, incluyendo cualquier eventos como touchUpInside. Trabajan en depuración, pero no suelte.

He intentado investigar este tema, así como el manejo de eventos en general y han llegado con las manos vacías. ¿Alguna idea de dónde se ven ahora?

¿Fue útil?

Solución

I finalmente descubrió el problema - la envoltura de los artículos de "botón" tenía una altura de 0. En el modo de depuración, la aplicación descubrió que los botones estaban siendo tocados a pesar de que no estaban dentro del área activa de su vista padre (clipsToBounds fue por defecto en nO por lo que los elementos de los botones estaban siendo perfectamente visible), en modo de lanzamiento, no tanto.

Esperamos que esto puede ayudar a salvar algunas personas la rascarse la cabeza y el tiempo que tenía que pasar por la depuración :) También he publicado esta a un error en Apple algún día, así que espero que será fijado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top