Mi rendo conto che lo standard didRotateFromInterfaceOrientation
è obsoleto in iOS 8; tuttavia, ho un'app che deve rimanere compatibile con iOS7. Il problema che sto avendo è che quando il dispositivo viene ruotato (iPad in questo caso) questo metodo viene chiamato due volte. Questo accade su un dispositivo reale e con il simulatore. Ho semplicemente inserito un NSLog nel metodo per mostrarlo.didRotateFromInterfaceOrientation accensione due volte con rotazione
-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
NSLog(@"didRotateCalled");
}
Inoltre ho controllato il willRotateToInterfaceOrientation
ma che uno funziona correttamente solo sempre chiamato una volta.
Qualche idea sul motivo per cui il metodo didRotateFromInterfaceOrientation
viene sparato due volte a rotazione?
Come aggiornamento rapido. Ho inserito un breakpoint in cui ho rivelato qualcosa di interessante. Questa vista è una UISplitviewcontroller
e sembra che il metodo sia chiamato prima per UISplitviewcontroller
e quindi come UIViewController
. Non so perché ...
Alcune informazioni aggiuntive. Sto usando Storyboard uno per iPhone e l'altro iPad. L'iPhone non usa lo splitViewController
. La base di codice è condiviso così nel prepareForSegue
faccio la seguente:
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
UISplitViewController *splitViewController = (UISplitViewController *)self.view.window.rootViewController;
splitViewController.delegate = segue.destinationViewController;
}
Stampa "da InterfacciaOrientazione". Che cosa ottieni? –
elenca le classi ViewController che stai utilizzando e dove hai implementato 'didRotateFromInterfaceOrientation'.Potrebbe essere il tuo metodo è chiamato da diverse istanze o dal codice in classe e superclasse. – Christian
Master split è un UITableViewController e la parte detail è un UIViewController. Quando una cella è selezionata sul lato master, il dettaglio viene "sostituito" con il contenuto appropriato. Puoi vedere nel mio codice sopra l'installazione per quello in preare ForSegue. – C6Silver