2012-09-16 3 views
0

Nous avons utilisé le code ci-dessous pour aligner un écran en mode paysageiPad - orientation paysage ne fonctionne pas sur iPad, mais travaillant dans le simulateur

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

Il montre comme prévu dans 5.1 simulateur (dans le paysage), mais montre en mode portrait
sur iPad. Pl suggérer

+2

Votre iPad sur iOS 6.0 est-il possible? Ou sa rotation est-elle bloquée? (les autres applications pivotent-elles?) –

+0

Filip. Vous avez raison. Son iPad 6.0. Aint 6.0 censé prendre en charge les fonctionnalités fonctionnant sur 5.1? Pl suggestion –

+0

Est-ce un écran modal qui est présenté alors que son parent est encore en cours de création et de présentation (c'est-à-dire dans 'viewWillAppear' ou' viewDidAppear')? –

Répondre

0

Cela peut être le problème auquel Filip se réfère.

Cependant, un autre problème que j'ai remarqué avec du matériel réel - même sans iOS 6 - est que la commande est légèrement différente.

Si vous tentez d'accéder à un contrôleur de vue modale à partir d'un contrôleur de vue avant qu'il ait entièrement traité sa propre rotation, le contrôleur de vue modale apparaît en mode portrait. Le premier contrôleur de vue n'a pas entièrement géré sa propre rotation jusqu'à ce que les événements soient traités pour lui. En d'autres termes, si vous essayez de présenter un contrôleur de vue modale à partir d'un événement précoce dans un contrôleur de vue (tel que viewWillAppear), il s'affichera toujours en mode portrait.

Pour résoudre ce problème, au lieu de présenter immédiatement le contrôleur de vue, il suffit de le programmer sur la boucle principale à l'aide d'un bloc.

Modifier la ligne qui appelle le contrôleur de vue, ce qui pourrait ressembler à ceci:

[self performSegueWithIdentifier: @"firstRun" sender: self]; 

Pour:

dispatch_async(dispatch_get_main_queue(), ^{ 
    [self performSegueWithIdentifier: @"firstRun" sender: self]; 
}); 

Si vous utilisez une autre méthode pour présenter le nouveau contrôleur de vue, essayez la même approche avec ceci: enveloppez-le dans un dispatch_async dans la file d'attente principale, donc c'est fait plus tard.

Questions connexes