Frage

Ich bin strugging eine iPhone-Anwendung mit bekommen, die gerade über jeden Push erfordert oder Pop im Nav Controller Stack zu ändern Orientierung.

Grundsätzlich ist die erste Ansicht ist Porträt, die zweite Landschaft des dritte Porträt wieder (Ja, ich weiß, das ist weniger als ideal, aber das ist das Design und ich habe es zu implementieren).

Ich habe hier durch verschiedene Ratschläge gewesen ....
Wie erkenne ich eine Rotation auf dem iPhone, ohne das Gerät autorotating?
Force-Porträt Orientierung auf neue Ansicht UINavigationViewController drängen < br> Gibt es eine dokumentierte Möglichkeit, die iPhone Orientierung zu setzen?
Aber ohne vollen Erfolg.

Link Einstellung gegen 3.1.2 meine Lektüre des verlinkten Artikels scheint oben, um anzuzeigen, dass, wenn meine Portraitansicht schiebt eine Ansicht mit

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Return YES for supported orientations
    return ((interfaceOrientation == UIInterfaceOrientationLandscapeRight) );
}
Dann dann diese Ansicht sollte auf Landschaft gedreht erscheinen. Was passiert, ist es in seiner „gebrochen“ Portrait Form erscheint, dreht sich dann richtig, wenn die Vorrichtung eingeschaltet wird.

Wenn ich den Controller wieder in meine Portraitansicht Pop (die eine entsprechende shouldAutoRotate hat ...), dann die Reste in gebrochener Landschaftsansicht, bis das Gerät im Hochformat zurückgeführt wird.

Ich habe auch versucht, alle shouldautorotate Nachrichten zu entfernen und stattdessen zwingt Drehung um die Ansicht zu verwandeln. Diese Art von Arbeiten, und ich habe, dass durch Bewegen der Statusleiste herausgefunden (die in meiner Anwendung tatsächlich versteckt ist) [UIApplication sharedApplication].statusBarOrientation = UIInterfaceOrientationLandscapeRight; die Tastatur mit der richtigen Ausrichtung angezeigt wird, wenn gewünscht wird.

Das Problem bei diesem Ansatz ist, dass die Statusleiste Transformation ist seltsam und hässlich, wenn Sie nicht über eine Statusleiste haben -. Ein Schatten Webstühle über die Seite mit jeder Änderung

So. Was vermisse ich.

1) Bin ich falsch im Denken, dass in 3.1.2 (oder möglicherweise früher) ShouldAutorotateToInterfaceOrientation einfach die gewünschte Orientierung geben sollte Controller durch Drücken?

2) Gibt es eine andere Art und Weise Tastaturen immer in der richtigen Ausrichtung angezeigt werden.

3) Sind die nicht dokumentierte API ruft den Weg zu gehen (bitte nicht!)

War es hilfreich?

Lösung

Sie sollten nicht [UIViewController shouldAutorotateToInterfaceOrientation:] verwenden, um eine Orientierungsänderung auszulösen; es ist da nur das System wissen zu lassen, wenn die automatische Rotation zulässig ist. Sie sollen es noch aktualisieren, um die Orientierung zu spezifizieren, wenn erlaubt wird.

Wenn Sie die Ausrichtung ändern möchten, wenn eine bestimmte Ansicht, die zeigt, sollten Sie [UIApplication setStatusBarOrientation:animated:] in Ihrem [UIViewController viewWillAppear:] Überschreibung Methode für jede der View-Controller aufrufen, die eine bestimmte Ausrichtung zu erzwingen. Das wird eine Änderung bewirken, wenn eine Ansicht auf den Stapel geschoben wird, und wenn es wird von ihm weg geknallt. Stellen Sie sicher, dass super in der Überschreibung Methode aufrufen.

Das ist auch der richtige Ort, um Veränderung, wie die Statusleiste angezeigt wird, wenn das etwas ist, du tust.

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