Ich habe ein seltsames Problem, wo ein benutzerdefiniertes Steuerelement, das ich für das iPhone gebaut hat, funktioniert einwandfrei im Debug-Modus, funktioniert aber nur teilweise im eingebauten Modus.Touch-Methoden funktionieren nicht mit Release Build
Die Hauptansicht des Wrappers ist eine Unterklasse von UIView
und enthält eine Reihe von "Schaltflächen", die als Unteransichten hinzugefügt werden. Die benutzerdefinierte Schaltfläche Klasse erweitert UIImageView
und überschreibt die Touch-Methoden mit folgenden Signaturen:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
Wenn Debug-Code erstellen, alle 4 dieser Funktionen zu den Zeiten aufgerufen werden Sie es erwarten würden, mit einem Release-Build, passiert nichts . Ich habe mich angemeldet, und ich bekomme keine Log-Nachrichten (andere Logging funktioniert).
Eine weitere interessante Sache, ich habe die BerührungenBegan/Moved/Ended-Methoden in der Wrapper View-Klasse überschrieben und sie funktionieren gut. Ich habe versucht, diese Methoden in der Wrapper-Klasse auskommentieren, um zu sehen, ob es eine Wirkung auf die Schaltflächen hatte, aber es nicht getan hat.
Ich habe auch versucht, die UIImageView
Klasse zu ändern, um eine Unterklasse von UIButton
zu sein, aber habe das gleiche Problem dort, einschließlich aller Ereignisse wie TouchUpInside. Sie arbeiten im Debug, aber nicht im Release.
Ich habe versucht, dieses Problem sowie allgemeine Ereignisbehandlung zu erforschen und sind leer ausgegangen. Irgendwelche Ideen, wohin man als nächstes schaut?
Es ist ein bisschen schwer zu sagen von dieser Info. Erhalten Sie Warnungen, wenn Sie alle Ziele bereinigen und Ihren Release Build neu erstellen? Wird Ihre Version in einem anderen Ziel als dem Debug-Build erstellt? –
Sauberer Build enthält keine Fehler oder Warnungen, alle Build-Einstellungen sind identisch, mit Ausnahme von Active Configuration, die auf Release statt auf Debug gesetzt ist. Dies ist reproduzierbar auf einem iPhone, iPod touch und Simulator. – Loktar