viste Avvisi contenuti nel ritratto, iPad nel paesaggio, e in grado di ruotare a nulla, ma “altro” paesaggio (180 gradi)

StackOverflow https://stackoverflow.com/questions/3816566

Domanda

Aggiornamento: Risolto. Vedere correzione in basso.

Nel mio iPad che supporta tutti gli orientamenti, se l'applicazione viene caricato nel paesaggio, cose strane accadono:

  1. viste avviso appaiono in verticale, anche se il resto è nel paesaggio
  2. Ruotando l'iPad da orizzontale a verticale non comporta una rotazione (né innescare uno qualsiasi dei metodi di stile shouldAutorotate).
  3. Ruotando i gradi iPad 180 (a "altro paesaggio") fa la rotazione grilletto, e dopo questo, l'iPad si comporta come normale (cioè ruota correttamente al ritratto e del paesaggio quando viene ruotato).
schermata di visualizzazione

Avviso di seguito. Strano, strano. Tutte le idee perché questo potrebbe accadere? Succede solo quando il caricamento nel paesaggio - carico in verticale e poi in rotazione a paesaggio funziona bene. Landtrait!

Soluzione: verificato Questo problema perché stavo aggiungendo un UIViewController (modale) sulla parte superiore del regolatore vista principale non appena l'applicazione di carico finito (più specificamente, nel metodo viewDidAppear: dell'app).

IOS invia un numero di chiamate (4) shouldAutorotateToInterfaceOrientation: alla corrente / controllore principale vista dopo le cose sono avviato, per capire quali orientamenti sono supportati. Quando ho aggiunto altro VC così presto, questo si è verificato nel mezzo delle chiamate di cui sopra. Così, ho ottenuto solo una o due chiamate (per "ritratto", perché inizia con il ritratto).

Il controller di vista principale è stato poi lasciato con un supporto predefinito di "NO" per gli orientamenti del paesaggio, ma il controller della vista appena aggiunto (che è anche chiesto orientamenti) risponde ora felicemente sì.

Se avessi tolto l'altro VC (che è nel paesaggio), mi sarebbe reso conto che il mio principale controller di vista è stato bloccato in ritratto. Così ho avuto un orientamento verticale, in cima alla quale c'era una vista del paesaggio. Gli allarmi e tale ascoltato l'orientamento del primo, quindi i risultati disastrosi sopra.

Inoltre, se ho cercato di rotazione per ritratto, non potevo, perché il principale controller della vista era già in ritratto. Rotazione di paesaggio era anche impossibile perché l'altro controller di vista è già in paesaggio. Solo quando ho fatto il "paesaggio, ma che altro" rotazione, ha entrambi i controller di vista sono d'accordo è stato richiesto che la rotazione, e quindi il dispositivo di rotazione.

La correzione nel mio caso è stato quello di mettere semplicemente la creazione di altro controller in un leggero ritardo. utilizzando performSelector:withObject:afterDelay. - 0 sembrava funzionare, ma ho appena messo a 1 per essere sicuro. Sembra un po 'strano, con il VC principale che appare e poi l'altro vc, ma è meglio di quanto sopra.

È stato utile?

Soluzione

Questo problema si è verificato perché stavo aggiungendo un UIViewController (modale) sulla parte superiore del regolatore vista principale non appena l'applicazione di carico finito (più precisamente, nel viewDidAppear dell'app: metodo).

Vedi sopra posta per i dettagli sulla soluzione.

Altri suggerimenti

Usa UIAlertController invece di UIAlertView. Ho lo stesso problema e la sua ora risolto.

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