Zdaję sobie sprawę, że didRotateFromInterfaceOrientation
jest przestarzałe w iOS 8; Mam jednak aplikację, która musi pozostać zgodna z iOS7. Problem polega na tym, że kiedy urządzenie jest obracane (w tym przypadku iPad), ta metoda jest wywoływana dwukrotnie. Dzieje się tak zarówno na rzeczywistym urządzeniu, jak i na symulatorze. Po prostu umieściłem NSLog w metodzie, aby to pokazać.didRotateFromInterfaceOrientation wypalanie Dwa razy podczas obracania
-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
NSLog(@"didRotateCalled");
}
Sprawdziłem również willRotateToInterfaceOrientation
, ale ten działa poprawnie tylko raz zostaje wywołany.
Masz jakieś pomysły, dlaczego metoda didRotateFromInterfaceOrientation
byłaby uruchamiana dwa razy na obrót?
Jako szybka aktualizacja. Postawiłem punkt przełomowy, w którym odkryłem coś interesującego. Ten widok to UISplitviewcontroller
i wygląda na to, że metoda jest najpierw wywoływana dla UISplitviewcontroller
, a następnie jako UIViewController
. Nie wiem, dlaczego ...
Kilka dodatkowych informacji. Używam Storyboards one dla iPhone'a i innego iPada. IPhone nie korzysta z splitViewController
. Podstawa kod jest dzielona tak w prepareForSegue
I wykonaj następujące czynności:
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
UISplitViewController *splitViewController = (UISplitViewController *)self.view.window.rootViewController;
splitViewController.delegate = segue.destinationViewController;
}
Wydrukuj "fromInterfaceOrientation". Co dostajesz? –
wymień używane klasy ViewController i miejsce, w którym zaimplementowano 'didRotateFromInterfaceOrientation'.Być może twoja metoda jest wywoływana z różnych instancji lub z kodu w klasie i nadklasie. – Christian
Podział master jest kontrolerem UITableViewController, a część szczegółowa jest kontrolerem UIViewController. Po wybraniu komórki po stronie wzorcowej szczegóły zostają "zastąpione" odpowiednią treścią. Możesz zobaczyć w moim kodzie powyżej konfiguracji dla tego w preareForSegue. – C6Silver