Domanda

Sto cercando di creare un'applicazione per iPhone con due visualizzazioni secondarie nella finestra principale.A ciascuna vista è associata la propria sottoclasse UIViewController.Inoltre, all'interno dell'implementazione di ciascun controller, ho aggiunto il seguente metodo:

-(BOOL)shouldAutorotateToInterfaceOrientation:
 (UIInterfaceOrientation)interfaceOrientation {
    return YES;
   }

Pertanto, mi aspetterei che entrambi i punti di vista rispondessero ai cambiamenti di orientamento.Tuttavia, questo non è il caso.Solo il Primo la vista aggiunta alla finestra principale dell'app risponde all'orientamento.(Se scambio l'ordine in cui vengono aggiunte le visualizzazioni, solo l'altra visualizzazione risponde.In altre parole, funzioneranno entrambi, ma solo uno alla volta.)

Perchè è questo?Non è possibile gestire i cambiamenti di orientamento di più di una vista?

Grazie!

MODIFICARE:Qualcun altro ha avuto questa domanda, quindi copio la mia soluzione qui:

Sono stato in grado di risolvere questo problema fornendo una visualizzazione root e un controller della visualizzazione root con il metodo "shouldAutoRotate..." e aggiungendo le mie altre visualizzazioni come visualizzazioni secondarie alla visualizzazione root.Le visualizzazioni secondarie ereditano il comportamento di rotazione automatica e i controller di visualizzazione associati non dovrebbero aver bisogno di sovrascrivere "shouldAutoRotate..."

È stato utile?

Soluzione 2

Finalmente pubblicherò la mia soluzione qui:

Fondamentalmente, si trattava di avere un UIViewController "root".In questo, ho il metodo:

-(BOOL)shouldAutorotateToInterfaceOrientation:
(UIInterfaceOrientation)interfaceOrientation {
        return YES;
}

Ho anche aggiunto le visualizzazioni che volevo ruotare automaticamente come visualizzazioni secondarie all'UIView di UIViewContoller radice.Queste sottoview hanno anche dei controller di visualizzazione, ma lo fanno non oltrepassare shouldAutorotateToInterfaceOrientation.In effetti, l'aggiunta di questo metodo a tali controller di visualizzazione sembra non avere alcun effetto.Solo il controller della vista root shouldAutorotateToInterfaceOrientation sembra funzionare e tutte le visualizzazioni secondarie vengono ruotate correttamente.

Altri suggerimenti

È necessario sovrascrivere il metodo ShouldAutorotateToInterfaceOrientation su tutti e tre i controller di cui disponi.

puoi provare a implementare questo metodo nella classe, la cui vista contiene entrambe le viste del tuo viewController

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