Domanda

Ho un problema strano in cui un controllo personalizzato che ho costruito per iPhone funziona perfettamente quando si costruisce in modalità debug, ma funziona solo parzialmente quando costruito nella modalità di rilascio.

La vista principale avvolgitore è una sottoclasse di UIView e contiene una fila di "pulsanti" che vengono aggiunti come subviews. La classe pulsante personalizzato estende UIImageView e sta sostituendo i metodi di contatto con le seguenti firme:

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

Quando si costruisce codice di debug, tutti e 4 di queste funzioni sono chiamati ai tempi che ci si aspetta, con una build di rilascio, non succede nulla. Ho la registrazione in ciascuno di loro e io non ricevo alcun messaggio di log (logging altro sta lavorando).

Un'altra cosa interessante, ho la touchesBegan / spostate / metodi Ended sovrascritti nella classe di visualizzazione involucro e stanno lavorando bene. Ho provato commentando questi metodi nella classe wrapper per vedere se ha avuto un effetto sui tasti, ma non lo feci.

Ho anche provato a cambiare la classe UIImageView di essere una sottoclasse di UIButton invece, ma sto avendo lo stesso problema c'è, comprese le eventuali eventi come touchUpInside. Lavorano in di debug, ma non rilasciare.

Ho provato la ricerca di questo problema così come la gestione generale dell'evento e sono venuto a mani vuote. Tutte le idee dove osservare dopo?

È stato utile?

Soluzione

ho finalmente capito il problema - il wrapper per le voci "pulsante" aveva un'altezza pari a 0. In modalità di debug, l'applicazione capito che i bottoni venivano toccati, anche se non erano dentro l'area attiva della loro vista padre (clipsToBounds è stato stabilizzato su NO così sulle voci dei tasti erano ancora perfettamente visibile), in modalità di rilascio, non tanto.

Speriamo che questo può contribuire a salvare alcune persone la testa di graffiare e il tempo che ho dovuto passare attraverso il debug :) Ho anche postato questo ad un bug di Apple un giorno così è auspicabile che sarà fissato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top