Sto cercando di ottenere un'applicazione per iPhone che richiede pressoché ogni push o pop nello Stack controller Nav per cambiare l'orientamento.Forzatura modifiche interfaccia utente UIInterface su iPhone
Fondamentalmente la prima vista è ritratto, la seconda ripropone il terzo ritratto (Sì, so che questo non è l'ideale, ma questo è il design e devo implementarlo).
Sono stato attraverso vari consigli su qui ....
How do I detect a rotation on the iPhone without the device autorotating?
Force portrait orientation on pushing new view to UINavigationViewController
Is there a documented way to set the iPhone orientation?
Ma senza successo totale.
Impostazione di collegare 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));
}
Poi allora che vista dovrebbero apparire ruotata al paesaggio. Quello che succede è che appare nella sua forma di ritratto "spezzato", quindi ruota correttamente mentre il dispositivo viene girato.
Se richiamo il controller nella vista verticale (che è appropriato dovrebbeAutoRotate ...) rimane nella visualizzazione orizzontale interrotta fino a quando il dispositivo non viene riportato all'orientamento verticale.
Ho anche provato a rimuovere tutti i messaggi shouldautorotate e invece a forzare la rotazione trasformando la vista. Questo tipo di opere, e ho capito che spostando la barra di stato (che è effettivamente nascosta nella mia applicazione) [UIApplication sharedApplication].statusBarOrientation = UIInterfaceOrientationLandscapeRight;
la tastiera apparirà con l'orientamento corretto quando desiderato.
Il problema con questo approccio è che la trasformazione della barra di stato è strana e brutta quando non si dispone di una barra di stato: un'ombra incombe sulla pagina ad ogni modifica.
Così. Cosa mi manca
1) Ho sbagliato a pensare che in 3.1.2 (o possibilmente prima) shouldAutorotateToInterfaceOrientation dovrebbe fornire l'orientamento desiderato semplicemente spingendo i controller?
2) C'è un altro modo per far apparire le tastiere con l'orientamento corretto.
3) sono le API non documentate chiama la strada da percorrere (per favore no)
Non sono sicuro se c'è una differenza tra [UIApplication setStatusBarOreintation .... e [UIApplication sharedApplication] .statusBarOrientation ... Verificherò, altrimenti è quello che ho fatto, e sto soffrendo ombra della barra di stato che gira intorno.Nella vista orizzontale, utilizzo una trasformazione per mostrare inizialmente la vista in orizzontale. Se quindi autorizzo una vista orizzontale con shouldAutorotateToInterfaceOrientation, non verrà nuovamente attivata? Come faccio a sovrascriverlo? – Andiih
Si noti che questo metodo è stato deprecato in iOS 9. – fullofsquirrels