2010-07-06 3 views
0

shouldAutorotateToInterfaceOrientation est certainement appelé ... mais quand je fais tourner l'iphone ... ou le simulateur ... rien ne change.iPhone 3.x et 4.x: shouldAutorotateToInterfaceOrientation renvoie TRUE, mais rien ne se passe

Je pensais que tout ce que je devais faire était le suivant:

-(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    NSLog(@"this is being called ok"); 
    return(YES);  // Or return(TRUE); 
} 

Mais je crois qu'il ya autre chose que je dois mettre ????

+0

Avez-vous réglé ceci à 'YES' (préféré à 'TRUE' dans Objective-C, mais les deux fonctionneront) dans tous les' UIViewControllers 'actuellement à l'écran? –

+0

J'ai essayé à la fois OUI et VRAI (pas de changement). Comment trouver "tous les viewcontrollers actuellement sur l'écran"? J'ai 4 XIBs: Main ... et 3 onglets sur ma barre d'onglets. Fichiers 3 * .m. (1 pour chaque XIB) ... puis le fichier app-delegate * .m. Je n'ai besoin que de l'un des onglets pour permettre la rotation. Est-ce que j'ai toujours besoin de shouldAutorotateToInterfaceOrientation pour apparaître dans 4 endroits différents? Ou seulement dans le 1 que je dois faire pivoter? Ou seulement dans l'application-délégué? – Helen

Répondre

0

Je pense que tous les contrôleurs de vue ajoutés à un contrôleur de barre d'onglets doivent prendre en charge une orientation pour que le contrôleur de barre d'onglets le supporte (par défaut, UIViewController ne prend en charge que l'orientation portrait). Sinon, l'interface serait tronquée si vous la déplaciez en mode paysage sur un onglet qui la supportait, puis passiez à un onglet qui ne le faisait pas.

+0

Donc la réponse est "doit apparaître dans 4 endroits différents"? Je pensais à coup sûr que j'ai vu "seulement certaines vues tournent, d'autres ne le font pas" dans d'autres applications. Qu'est-ce qui serait exactement "mutilé" si l'onglet 2 permettait la rotation ... mais l'onglet 3 l'interdisait? Aussi ... quel est le plus facile à écrire * ONE * copie de shouldAutorotateToInterfaceOrientation et l'a-t-il apparaître dans mon code 4 fois (sans couper/coller)? – Helen

+0

Lorsque vous faites pivoter, la barre d'onglets et la barre d'état pivotent également. Donc, si l'un des onglets restait en portrait, il deviendrait beaucoup plus étroit (plus il serait maintenant latéral par rapport aux onglets), forçant l'utilisateur à incliner la tête (ou à tourner en arrière). Et les utilisateurs n'aiment pas être obligés de faire des choses :-) Si vous * ne * voulez vraiment pas dupliquer quelques lignes à quatre endroits, vous pouvez créer une sous-classe UIViewController qui remplace juste shouldAutorotateToInterfaceOrientation et dériver le reste de vos contrôleurs de vue de cela. – Brian

Questions connexes