Domanda

Sto strugging con ottenere un'applicazione per iPhone che richiede quasi ogni push o pop nel controller Stack Nav all'orientamento cambiamento.

In pratica il primo punto di vista è ritratto, il secondo paesaggio di nuovo il terzo ritratto (Sì, lo so questo è proprio l'ideale, ma questo è il disegno e ho per la sua attuazione).

Sono stato attraverso vari consigli su qui ....
Come faccio a rilevare una rotazione su iPhone senza il dispositivo autorotating?
Forza orientamento verticale a spingere nuova visualizzazione a UINavigationViewController < br> C'è un modo documentato per impostare l'orientamento iPhone?
Ma senza successo totale.

Impostazione di Link contro 3.1.2 mia lettura degli articoli legati sopra sembra indicare che se la mia vista ritratto spinge una vista con

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Return YES for supported orientations
    return ((interfaceOrientation == UIInterfaceOrientationLandscapeRight) );
}
Allora poi quella vista deve apparire ruotata al paesaggio. Ciò che accade è appare nella sua forma ritratto "rotto", quindi ruotare correttamente come il dispositivo è acceso.

Se ho pop retro controller per mio punto di vista ritratto (che ha uno shouldAutoRotate appropriata ...) allora che rimane in vista del paesaggio rotto fino a quando il dispositivo viene restituito al orientamento verticale.

Inoltre ho provato a rimuovere tutti i messaggi shouldautorotate, e invece costringendo la rotazione, trasformando la vista. Questo tipo di opere, e ho capito che spostando la barra di stato (che in realtà è nascosto nella mia applicazione) [UIApplication sharedApplication].statusBarOrientation = UIInterfaceOrientationLandscapeRight; tastiera comparirà con l'orientamento corretto quando lo si desidera.

Il problema di questo approccio è che la barra di stato trasformare è strano e brutto quando non si dispone di una barra di stato -. Un'ombra incombe la pagina con ogni cambio

. Che cosa mi manca.

1) Mi sbaglio nel pensare che nella 3.1.2 (o forse prima) shouldAutorotateToInterfaceOrientation dovrebbe fornire l'orientamento desiderato semplicemente premendo i controllori?

2) C'è un altro modo di ottenere tastiere ad apparire con l'orientamento corretto.

3) sono le API non documentate chiama la strada da percorrere (per favore no!)

È stato utile?

Soluzione

Non dovrebbe usare [UIViewController shouldAutorotateToInterfaceOrientation:] per attivare un cambiamento di orientamento; è lì solo per far conoscere al sistema se le rotazioni automatici sono ammessi. Si dovrebbe comunque aggiornarlo per specificare l'orientamento che ha permesso però.

Se si desidera cambiare l'orientamento quando una particolare visione sta mostrando, si dovrebbe chiamare [UIApplication setStatusBarOrientation:animated:] all'interno del vostro metodo di sostituzione [UIViewController viewWillAppear:] per ciascuno dei controller di vista che costringono un particolare orientamento. Che causerà un cambiamento quando una vista viene inserito nello stack e quando sta spuntato fuori di esso. Assicurati di chiamare super nel vostro metodo di sostituzione.

Questo è anche il posto giusto per il cambiamento modalità di visualizzazione della barra di stato, se questo è qualcosa che si sta facendo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top