2012-06-14 8 views
13

Ich baue eine iPad-Anwendung. wenn die Anwendungen starten, zeige ich es im Querformat rechts. Aber sobald die Anwendung gestartet bekomme ich diese NachrichtZweistufige Rotationsanimation ist veraltet. Diese Anwendung sollte die glattere einstufige Animation verwenden

Two-stage rotation animation is deprecated. This application should use the smoother single-stage animation 

ich diese Methode verwendet, in allen meinen Klassen

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

ich auch meine unterstützten Schnittstelle Orientierungen (iPad) auf Landschaft direkt in meiner plist-Datei . Wie löst man diese Warnmeldung?

+0

Wenn Sie versuchen, modale UITabBarController zu verwenden (upd. Ja, tun Sie), dann sehen Sie Lösung [hier] (http://stackoverflow.com/questions/6271978/presenting-uitabbarcontroller-modally-autorotate-problem). Offizielle Erklärung, warum dies [hier] geschah (http://stackoverflow.com/questions/6636683/how-to-eliminate-two-stage-rotation-warning). – Alexander

+0

@Alexander Ich zeige die Tabbar nicht modal. – southpark

+0

Sind Sie "Login-Bildschirm" ein NavigationController? Alle Controller, die "rootViewController" sein müssen, sollten nicht als "modal" verwendet werden. – Alexander

Antwort

15

Ich habe gerade festgestellt - nach dem Lesen this Antwort - dass ich einfach den Tab Bar Controller falsch verwendet: Die Tableiste sollte nur als Root-Controller verwendet werden, aber ich habe einen Navigationscontroller davor eingefügt.

+0

Es scheint, Tab-Controller könnte in Nav-Controller in iOS8 verwendet werden, aber den Fehler in iOS7. – supNate

1

Das Problem ist, dass Ihre Anwendung eine dieser Methoden verwendet, die 5,0 in iOS veraltet waren:

didAnimateFirstHalfOfRotationToInterfaceOrientation: 
willAnimateFirstHalfOfRotationToInterfaceOrientation:duration: 
willAnimateSecondHalfOfRotationFromInterfaceOrientation:duration: 

Sie benötigen eine Ansicht-Controller ändern willAnimateRotationToInterfaceOrientation:duration: stattdessen außer Kraft zu setzen und zu nicht überschreiben jede der "HalfOfRotation" -Methoden.

+0

Wo stelle ich diese Methode. – southpark

+0

Was meine App genau tut ist-ich habe eine Tabbar-Anwendung. Ich initiiere einen Tabbarcontroller in meinem Appdelegate und füge alle meine Klassen dem Array von Tabbarcontroller hinzu. Dann füge ich einen Login-Bildschirm in den Vordergrund der Tableiste und nach dem Login zeige ich die Tableiste. Meine Anwendung wird im Querformat geöffnet, aber ich erhalte diese Warnung. auch denke ich deswegen meine Tastaturgröße falsch zu bekommen. Wenn ich im Landscape-Modus die Breite und Höhe der Tastatur anzeige, erhält man in ipad 3 Breite = 352 und Höhe = 1024. Ich weiß, dass das System nicht weiß, dass es sich gerade im Querformat befindet.Danke – southpark

+0

Haben Sie Ihren ganzen Quellcode nach diesen veralteten Methoden gesucht? –

0

ckeck Ihre Array-Deklaration für Tableiste ..possible Fehler u getan: Ich erklärte Array oblects nach

tabBarController.viewControllers = tabControlArry; 
[tabControlArry addObject:navCOntroller]; 
[tabControlArry addObject:navController1]; 

korrekte Art und Weise die Zuordnung:

[tabControlArry addObject:navCOntroller]; 
[tabControlArry addObject:navController1]; 
tabBarController.viewControllers = tabControlArry; 
7

Sie können auch diese Fehlermeldung Wenn Sie die App mit einem leeren Tab-Controller als root in Ihrem Storyboard ausgeführt haben. Ich habe gerade mit einer App angefangen und meine UITabBarController hat noch keine View-Controller, aber präsentiert eine Login-Modalität.

+0

Ich hatte genau das. Vielen Dank. – Skrew

0

Diese Fehlermeldung bezieht sich auf die Verwendung von TabBarController. Sie können diesen Fehler erwarten, wenn Sie Ihren TabBarController nicht als "root controller" für Ihre App festlegen. Also machen Sie Ihren TabBarController als Root-Controller & Dieser Fehler wird Sie nicht mehr belästigen.