Ich merke, dass didRotateFromInterfaceOrientation
in iOS 8 veraltet ist; Ich habe jedoch eine App, die mit iOS7 kompatibel bleiben muss. Das Problem, das ich habe, ist, dass wenn das Gerät gedreht wird (iPad in diesem Fall) diese Methode zweimal aufgerufen wird. Dies geschieht sowohl auf einem tatsächlichen Gerät als auch mit dem Simulator. Ich habe einfach einen NSLog in die Methode eingefügt, um dies zu zeigen.didRotateFromInterfaceOrientation feuern Zweimal wenn gedreht
-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
NSLog(@"didRotateCalled");
}
Ich habe überprüft auch die willRotateToInterfaceOrientation
aber, dass man richtig funktioniert nur einmal aufgerufen zu werden.
Irgendwelche Gedanken, warum die didRotateFromInterfaceOrientation
Methode zweimal pro Umdrehung ausgelöst würde?
Als ein schnelles Update. Ich habe einen Haltepunkt gesetzt, in dem etwas Interessantes aufgedeckt wurde. Diese Ansicht ist ein UISplitviewcontroller
und es sieht so aus, als ob die Methode zuerst für die UISplitviewcontroller
und dann als UIViewController
aufgerufen wird. Nicht sicher, warum ...
Einige zusätzliche Informationen. Ich verwende Storyboards für iPhone und das andere iPad. Das iPhone verwendet nicht die splitViewController
. Die Code-Basis geteilt wird so in der prepareForSegue
ich folgendes tun:
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
UISplitViewController *splitViewController = (UISplitViewController *)self.view.window.rootViewController;
splitViewController.delegate = segue.destinationViewController;
}
Ausdruck der 'fromInterfaceOrientation'. Was bekommst du? –
Listen Sie die ViewController-Klassen auf, die Sie verwenden und wo Sie die 'didRotateFromInterfaceOrientation' implementiert haben.Es kann sein, dass Ihre Methode von verschiedenen Instanzen oder von Code in Klasse und Superklasse aufgerufen wird. – Christian
Master Split ist ein UITableViewController und der Detailbereich ist ein UIViewController. Wenn eine Zelle auf der Masterseite ausgewählt wird, wird das Detail durch den entsprechenden Inhalt ersetzt. Sie können in meinem Code über das Setup dafür in preareForSegue sehen. – C6Silver