Upvoters: Kannst du mich wissen lassen, ob du dieses Problem auch gesehen hast?
Das Problem, das ich sehe, tritt etwa alle 1 bis 15 Mal auf, wenn ich versuche, einen View-Controller über eine Schaltfläche in einer bestimmten Szene modal zu starten.
Dies wird mit iOS 9.2.1 und XCode 7.2 gemacht, obwohl nicht klar ist, in welchen Versionen es passiert. Es ist nicht einfach, die iOS-Version zu ändern.
Die Symptome sind wie folgt:
- Der Zielansicht-Controller ist auf dem Telefon nicht sichtbar. Stattdessen wird der obere Balken (der mit dem Träger) schwarz und manchmal flackert es, so dass der ganze Bildschirm komplett schwarz ist. Der Startansicht-Controller ist sichtbar, reagiert jedoch nicht.
- Wenn das passiert, gehe ich zum XCode-Bildschirm und zeige das Debugging an. Bemerkenswerterweise zeigt dies den Zielbildschirm, fast so, wie er aussehen soll. Der einzige Unterschied besteht darin, dass eine der Ansichten ihr drawRect nicht ausgeführt hat und eine der anderen Ansichten ganz gesprenkelt aussieht. Aber es entspricht natürlich nicht dem, was das Telefon zeigt.
- Der Abbrechen-Button auf dem Zielbildschirm scheint immer noch zu funktionieren, denn wenn ich drücke, wo es sein soll, funktioniert die App weiter. Wenn ich versuche, den Bildschirm mit der Taste neu zu starten, funktioniert es wieder nicht. Sobald dies passiert ist, hat der Bildschirm für diese Sitzung nicht mehr funktioniert und die App muss beendet und neu gestartet werden.
Es gibt nicht viele Hinweise, aber diese Information kann helfen:
- Es gibt 3 scrollviews mit Ansichten auf dem Zielbildschirm. Alle drei Kindansichten haben ihre eigene drawRect. Es stellt sich heraus, dass einer der drawRects nicht aufgerufen wird, wenn der Fehler auftritt, was dazu führt, dass der graue Hintergrund angezeigt wird. Die gesprenkelte Ansicht läuft, aber ich habe keine Ahnung, warum es im Debugging so aussieht.
- Keine Warnungen in XCode. Nichts über NSLayout-Beschränkungen oder Präsentationen, die sich überschneiden.
- In der prepareForSegue-Funktion des Controllers für die Zielansicht werden zwei Felder festgelegt.
- Der Übergang wird vom Times-Button über das Storyboard gestartet. Es gibt keine fehlende oder extra Steckdose, und es ist richtig für die Vorbereitungsfunktion benannt, um es zu fangen.
Das Problem tritt nur sporadisch auf, tritt jedoch zuverlässig auf, wenn Sie häufig hintereinander starten / abbrechen.
Hier sind die Screenshots. Ich werde dir den schwarzen Bildschirm nicht zeigen. Es ist nur schwarz mit dem Träger und der Zeit.