UIViewController nicht automatisch drehen
Als der Titel sagt. Meine UIViewController nicht drehen, egal was. Wenn es lädt shouldAutorotateToInterfaceOrientation aufgerufen wird, aber danach klappt es auch.
UPDATE 1:
Es ist eine wirklich, wirklich seltsame problem. Zumindest für mich. Und ich ll versuchen, alles zu erklären.
Es ist eine navigation app. Jeder controller hat
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{
return YES;
}
Xcontroller ist ein Kind des Acontroller und es nicht automatisch drehen. Wenn Xcontroller ein Kind Bcontroller dann wird es Anz. autom.. So etwas ist falsch mit Acontroller. Aber Acontroller ist identisch (mit Ausnahme der Daten) zu Bcontroller.
Was Falsch?
UPDATE 2:
Habe ich beschlossen, neu zu erstellen Acontroller. Und es hat funktioniert.Ich glaube, ich war etwas fehlt, doof.
- Wie implementieren Sie die
-shouldAutorotateToInterfaceOrientation:
? - - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{ return YES; } Wenn es das ist was du meinst :).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin mir nicht sicher, ob es derselbe Grund wie bei deinem Fall. Aber ich erlebte das gleiche. die
shouldAutorotateToInterfaceOrientation
war nur einmal aufgerufen am Anfang.Nach einigen schweren debugging, indem Sie unter code abgesehen, fand ich, dass der Grund dafür ist in meinem init-Methode überschrieben.
Ich hatte diese vor:
Und dann wechselte ich zu diesem
Hinweis: der einzige Unterschied ist, dass ich Hinzugefügt
[super init]
zu nennen, die Eltern-init.Nach dieser änderung, die rotation funktioniert gut und die shouldAutorotateToInterfaceOrientation aufgerufen wird, jedes mal, wenn ich drehen Sie den Bildschirm.
Hoffe, dass dies helfen.
Es kann mehrere mögliche Gründe, die Ihr view-controller nicht drehen.
Sehen apples offizielle Q&A auf diese Frage:
Apple Q&A hat die detaillierte Lösung für das problem.
Warum nicht meine UIViewController drehen mit dem Gerät?
http://developer.apple.com/library/ios/#qa/qa1688/_index.html
Wenn Sie einen viewcontroller.Blick auf uiwindow, sollten Sie diesen viewcontroller als rootviewcontroller.
Stellen Sie außerdem sicher, dass Sie nicht Verdrehsicherung auf. Ich verbrachte eine gute Stunde damit, herauszufinden, warum meine Ansichten nicht mehr drehen. shouldAutorotateToInterfaceOrientation aufgerufen wurde nur einmal beim start und beim Game Center Ranglisten/Errungenschaften präsentiert wurden.
Ich hatte das gleiche Problem - der Grund war, dass es war meine erste UIViewController, dass ich on the fly erstellt in meinem ApplicationDelegate, fügte hinzu, es die Ansicht meiner UIWindow und sofort freigegeben.
Das ist natürlich nicht korrekt, da habe ich nur noch die UIView der UIViewController (behalten Sie) und veröffentlicht als die ganzen controller.
Sollten Sie Ihre erste UIViewController als Instanz-variable in Ihrer ApplicationDelegate statt, und lassen Sie es in Ihrem ApplicationDelegate die dealloc-Methode.
In meinem Fall, die ViewController wurde in einem NavigationController, die verwendet wurde, durch eine "übergeordnete" viewControlled erhalten, dass die Orientierung ändert.
Was ich in dieser Elternteil war:
Diese Weise können Sie die Implementierung Ihrer eigenen Orientierung ändern-Logik in Abhängigkeit von der aktuell sichtbaren Steuerung.
Mit der oben beschriebenen Methode, wenn u verwenden, werden Sie in der Lage, um viele der Zeit, wenn u wollen, ohne Fehler.
Ich denke, es ist kein seltsames Verhalten hier, es heißt nur eine die richtige ist. Es gibt keine Notwendigkeit, rufen Sie mehr als eine zu entscheiden, wenn Sie das Gerät drehen, um die Richtung oder nicht.
Dieser Methode Fragen Sie einfach, wenn Sie das Gerät drehen, um die Richtung oder nicht.
Wenn Sie möchten, behandeln Sie die Ausrichtung ändern, sollten Sie sich für die Benachrichtigung von der UIDeviceDidChangeOrientationNotification und überschreiben Sie die folgende Methode:
Mehr sehen hier.
Ich habe das gleiche problem, aber mit zwei view-Controller Hinzugefügt, um die Anwendung UIWindow. Der Grund
ist Den view-controller der UIView-Eigenschaft ist eingebettet UIWindow aber neben einer zusätzlichen view-controller
Vom Apple Technical Q&A
http://developer.apple.com/library/ios/#qa/qa1688/_index.html