Question

J'ai écrit ma demande universelle en mode portrait, et maintenant, après environ 15 fichiers nib, beaucoup, beaucoup viewCotnrollers, Je voudrais mettre en œuvre le shouldAutorotateToInterfaceOrientation et concevoir des écrans en mode paysage.

ajouter:

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

à tous mes viewControllers, ne fait pas le travail.

Au cours de débogage, je vois que cette méthode est appelée, mais ça ne marchera pas! pas dans le simulateur, et non dans le dispositif, pas Iphone, Ipad pas!

J'ai cherché des réponses dans le forum, et a vu quelques-uns conseille d'utiliser:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
 return (interfaceOrientation == UIInterfaceOrientationPortrait ||
   interfaceOrientation == UIInterfaceOrientationLandscapeLeft || 
   interfaceOrientation == UIInterfaceOrientationLandscapeRight ||
   interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown );
} 

N'a pas fonctionné non plus,

ajouter:

 [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];

et

 [[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications];

à mon viewDidLoad et viewDidUnload ne respectivement pas travaillé non plus.

Je suis perdu .. Toute aide fera!

juste une information ... toutes mes vues sont de type UIControl, comme je l'avais besoin TuchUpInside au travail.

appriciate votre aide.

Était-ce utile?

La solution

Assurez-vous que toutes vos vues parents ont autoresizesSubviews = OUI. Vous devrez peut-être de le faire dans le code si vous avez des ressorts et des entretoises non défini dans IB pour toutes vos vues.

Guide de l'Citant Interface Builder utilisateur:

  

Important: Dans un fichier nib Cocoa, si vous   ne fixent pas de ressorts ou d'entretoises pour   votre point de vue dans Interface Builder, mais   puis faire utiliser le setAutoresizingMask:   méthode pour ajouter un comportement à redimensionnement automatique   exécution, votre point de vue peut toujours pas   présentent la Autoresizing correcte   comportement. La raison est que l'interface   Constructeur d'un redimensionnement automatique désactive   Les enfants de vue parent en tout cas   ces enfants ont pas de ressorts et   ensemble entretoises. Pour activer le redimensionnement automatique   nouveau comportement, vous devez passer à OUI   les setAutoresizesSubviews: méthode de   la vue parent. En faisant cela, le   vues enfants devraient autoSize correctement.

Un couple d'autres choses à prendre en compte:

  1. A UINavigationController n'autorotation si son contrôleur de vue racine est également réglé sur autorotation.

  2. A UITabBarController n'autorotation si sont mis à autorotation tous ses contrôleurs de vue.

Autres conseils

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    UIInterfaceOrientation des=self.interfaceOrientation;

    if(UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad) //iPad
    {
        if(des==UIInterfaceOrientationPortrait||des==UIInterfaceOrientationPortraitUpsideDown)//ipad-portairait
        {

        }
        else//ipad -landscape
        {

        }
    }
    else//iphone
    {
        UIInterfaceOrientation des=self.interfaceOrientation;

        if(des==UIInterfaceOrientationPortrait||des==UIInterfaceOrientationPortraitUpsideDown) //iphone portrait
        {

        }
        else //iphone -landscape
        {

        }
    }
return YES;
}

Quelle construction iOS sont-vous? Il a été dépréciée dans iOS 6.0. (Vous devez remplacer les supportedInterfaceOrientations et méthodes preferredInterfaceOrientationForPresentation à la place.)

Vous pouvez également appeler shouldAutorotate sur la classe UIViewController:

https://developer.apple.com/library/ios/documentation/uikit/reference/UIViewController_Class/Reference/Reference.html#//apple_ref/occ/instm/UIViewController/shouldAutorotate


Assurez-vous que vous avez vérifié les prises en charge dans l'interface Orientations sur l'onglet « Estival » des paramètres du projet (Sélectionnez le nom du projet dans le au sommet « Navigator Project »).

Si vous ne l'avez pas sélectionné les orientations que vous souhaitez utiliser ici, le simulateur / iPhone ne permettra pas à l'écran à l'orientation du changement.

J'ai eu ce problème, mais cela a fonctionné dans iOS6 mais pas iOS5. Il se trouve que j'avais une vue dans mon story-board que je ne l'avais pas fait une classe viewcontroller pour encore.

... et last but not least, assurez-vous que vous ne l'avez pas activé le réglage « Portrait Orientation verrouillé » sur votre appareil de test (bien sûr ne pas appliquer au simulateur), cela désactive la rotation dans toutes les applications non la matière que revient shouldAutorotateToInterfaceOrientation.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top