Warnungsansichten im Portrait, iPad in der Landschaft, und nicht in der Lage zu drehen, um alles anderes als „andere“ Landschaft (180 Grad)

StackOverflow https://stackoverflow.com/questions/3816566

Frage

Update: Gelöst. Siehe fix unten.

In meinem iPad-App, die alle Orientierungen unterstützt, wenn der App im Querformat geladen wird, seltsame Dinge passieren:

  1. Alarmansichten erscheinen im Portrait, auch wenn der Rest in der Landschaft ist
  2. Durch Drehen des iPad von Quer- auf Hochformat löst keine Drehung (auch nicht eine der shouldAutorotate Stil Methoden auslösen).
  3. Rotierende die IPAD 180 Grad (auf „andere Landschaft“) auslöst Drehung und nach diesem, die IPAD verhält sich wie normal (d.h. dreht richtig Hoch- und Quer wenn sie gedreht).

Alarm Ansicht Bildschirm unten. Komisch komisch. Irgendwelche Ideen, warum dies passiert sein könnte? Es geschieht nur beim Laden in der Landschaft - Laden im Hoch- und dann auf Landschaft rotierenden ganz gut funktioniert. Landtrait!

Lösung: Dieses Problem trat auf, weil ich eine UIViewController (modal) oben auf den Hauptansicht-Controller, sobald die App fertig geladen Zugabe wurde (genauer gesagt in der viewDidAppear: Methode der App).

sendet iOS eine Reihe von (4) shouldAutorotateToInterfaceOrientation: Anrufen auf die aktuellen / Haupt-View-Controller nach haben sie die Dinge in Betrieb genommen, um herauszufinden, welche Orientierungen zur Zeit unterstützt werden. Wenn ich die anderen VC so bald hinzugefügt, geschah dies in der Mitte der genannten Anrufe. So ich nur einen oder zwei Anrufe bekam (für „Porträt“, weil es mit dem Porträt beginnt).

Der Hauptansicht-Controller wurde dann mit einer Standard-Unterstützung von „NEIN“ links für das Querformat, aber die neu hinzugefügte View-Controller (die auch über Orientierungen gefragt wird) nun glücklich antworten ja.

Wenn ich den anderen VC entfernt hatte (die Landschaft ist), hätte ich erkannte, dass meine Hauptansicht-Controller im Porträt stecken geblieben war. So hatte ich eine Portraitansicht, oben auf dem es eine Landschaftsansicht war. Die Warnungen und solche beachtet die Orientierung der ehemaligen, damit die katastrophalen Ergebnisse oben.

Außerdem, wenn ich versuchte zu drehen Portrait, konnte ich nicht, weil die Hauptansicht-Controller bereits im Portrait waren. Rotierende auf Landschaft war auch nicht möglich, weil die anderen Ansicht-Controller bereits in der Landschaft ist. Erst wenn ich die „Landschaft, sondern dass andere“ tat Rotation, tat beiden View-Controller darüber einig, dass eine Drehung erforderlich war, und so gedreht das Gerät.

Das Update in meinem Fall war einfach zu einer leichten Verzögerung der Schaffung der anderen Steuerung zu setzen. mit performSelector:withObject:afterDelay. - 0 schien zu arbeiten, aber ich es nur auf 1 setzen um sicher zu sein. Es sieht ein bisschen komisch, mit dem Haupt vc erscheint und dann den anderen vc, aber es ist besser als die oben.

War es hilfreich?

Lösung

Dieses Problem trat auf, weil ich einen UIViewController (modal) oben auf den Hauptansicht-Controller, sobald die App fertig geladen (genauer gesagt in der viewDidAppear App: Methode) hinzugefügt wird.

Siehe oben Beitrag für Details zu Lösung.

Andere Tipps

Verwenden UIAlertController statt UIAlertView. Ich habe das gleiche Problem und seine nun behoben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top