Zwingen UIInterfaceOrientation änderungen auf dem iPhone
Ich bin strugging mit dem ein iPhone-Anwendung, die erfordert gerade ungefähr jedem push oder pop in den Nav-Controller-Stack, um die Richtung ändern.
Grundsätzlich die erste Ansicht ist die portrait -, die zweite Landschaft das Dritte Porträt wieder (ja, ich weiß, dies ist weniger als ideal, aber das ist das design, und ich habe, um es zu implementieren).
Ich bin durch die diversen Ratschläge hier....
Wie erkenne ich eine rotation auf dem iPhone, ohne das Gerät autorotating?
Kraft hochformat auf drängen neue Sicht auf UINavigationViewController
Gibt es eine dokumentierte Möglichkeit, um die iPhone-Orientierung?
Aber ohne vollen Erfolg.
Einstellung link gegen 3.1.2 meiner Lektüre der verlinkten Artikel oben scheint zu zeigen, dass, wenn meine portrait-Ansicht schiebt sich eine Ansicht, mit
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
//Return YES for supported orientations
return ((interfaceOrientation == UIInterfaceOrientationLandscapeRight) );
}
Dann, die anzeigen erscheinen sollen gedreht werden, um Landschaft. Was passiert ist, es erscheint in seiner "kaputten" portrait form, dreht sich dann richtig wie das Gerät gedreht wird.
Wenn ich pop-controller zurück zu meinem portrait-Ansicht (die eine entsprechende shouldAutoRotate...) dann bleibt in broken landscape-Ansicht, bis das Gerät zurückgegeben-in das hochformat.
Habe ich auch versucht, das entfernen Sie alle shouldautorotate Nachrichten, und stattdessen zwingt rotation durch die Umwandlung der anzeigen. Diese Art der arbeiten, und ich habe herausgefunden, dass durch das verschieben der status-bar (die eigentlich versteckt in meiner Anwendung) [UIApplication sharedApplication].statusBarOrientation = UIInterfaceOrientationLandscapeRight;
die Tastatur erscheint, mit der richtigen Ausrichtung, wenn gewünscht.
Das problem bei diesem Ansatz ist, dass die status-bar verwandeln, ist seltsam und hässlich, wenn Sie nicht über eine status bar - ein Schatten ragt über die Seite mit jeder Veränderung.
So. Was vermisse ich.
1) Bin ich falsch im denken, die in 3.1.2 (oder möglicherweise früher) shouldAutorotateToInterfaceOrientation sollte die gewünschte Orientierung einfach durch drücken der Controller ?
2) gibt es eine andere Möglichkeit, Tastaturen erscheinen in der richtigen Ausrichtung.
3) die undokumentierte API-Aufrufe der Weg zu gehen (bitte nicht!)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie nicht verwenden
[UIViewController shouldAutorotateToInterfaceOrientation:]
auslösen, eine Orientierung zu ändern; es ist nur da, damit das system weiß, wenn die automatische umdrehungen sind erlaubt. Sollten Sie immer noch aktualisieren Sie, um die Ausrichtung festzulegen, die erlaubt, obwohl.Wenn Sie möchten, um die Ausrichtung zu ändern, wenn eine bestimmte Ansicht angezeigt wird, sollten Sie rufen
[UIApplication setStatusBarOrientation:animated:]
in Ihrem[UIViewController viewWillAppear:]
überschreiben-Methode für jedes view-Controller, die Kraft einer bestimmten Orientierung. Wird eine änderung bewirken, wenn ein view wird auf dem Stapel abgelegt und, wenn Sie darauf tauchte ab es. Stellen Sie sicher, Sie rufensuper
in Ihrer Methode überschreiben.Dies ist auch der richtige Ort, um zu ändern, wie die status-Leiste angezeigt wird, wenn das ist etwas, was du tust.