Question

Je strugging à obtenir une application iPhone qui nécessite à peu près chaque pression ou de la pop dans le Nav Stack Controller à l'orientation du changement.

Au fond de la première vue est le portrait, le paysage second le troisième portrait de nouveau (Oui, je sais que cela est loin d'être idéal, mais c'est la conception et je dois la mettre en œuvre).

Je suis passé par divers conseils ici ....
Comment détecter une rotation sur l'iPhone sans le dispositif autorotation?
orientation portrait force à pousser une nouvelle vue de UINavigationViewController < br> est-il un moyen documenté pour définir l'orientation iPhone?
Mais sans succès total.

Réglage de lien contre 3.1.2 ma lecture des articles liés ci-dessus semble indiquer que si mon mode portrait pousse une vue avec

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Return YES for supported orientations
    return ((interfaceOrientation == UIInterfaceOrientationLandscapeRight) );
}
Ensuite, alors ce point de vue doit apparaître orienté en mode paysage. Ce qui se passe est qu'il apparaît sous sa forme portrait « cassé », puis tourne correctement que l'appareil est sous tension.

Si je pop le dos du contrôleur à mon mode portrait (qui a une shouldAutoRotate appropriée ...), alors qu'il reste en vue du paysage cassé jusqu'à ce que le dispositif est retourné à l'orientation portrait.

Je l'ai également essayé de supprimer tous les messages shouldautorotate, et au lieu de forcer la rotation en transformant la vue. Ce genre d'œuvres, et je l'ai compris que en déplaçant la barre d'état (qui est en fait caché dans mon application) [UIApplication sharedApplication].statusBarOrientation = UIInterfaceOrientationLandscapeRight; le clavier apparaît avec l'orientation correcte quand on le souhaite.

Le problème avec cette approche est que la barre d'état de transformation est bizarre et laid quand vous ne disposez pas d'une barre d'état -. Un des métiers à tisser d'ombre sur la page à chaque changement

. Qu'est-ce que je rate.

1) Suis-je tort en pensant que 3.1.2 (ou peut-être plus tôt) shouldAutorotateToInterfaceOrientation devrait fournir l'orientation désirée simplement en appuyant sur les contrôleurs?

2) Y at-il une autre façon d'obtenir des claviers à apparaître dans l'orientation correcte.

3) sont l'API non documentée appelle la voie à suivre (pas s'il vous plaît!)

Était-ce utile?

La solution

Vous ne devriez pas utiliser [UIViewController shouldAutorotateToInterfaceOrientation:] pour déclencher un changement d'orientation; il est seulement là pour laisser le savoir système si les rotations automatiques sont autorisés. Vous devez toujours mettre à jour pour indiquer l'orientation qui a permis cependant.

Si vous voulez changer l'orientation en vue particulier montre, vous devez appeler [UIApplication setStatusBarOrientation:animated:] l'intérieur de votre méthode de remplacement de [UIViewController viewWillAppear:] pour chacun des contrôleurs de vue que la force d'une orientation particulière. Cela va provoquer un changement lorsqu'une vue est poussé sur la pile et quand il est en cours de sauté en dehors. Assurez-vous que vous appelez super dans votre méthode de remplacement.

Ceci est également le bon endroit pour changer la façon dont la barre d'état est affiché, si c'est quelque chose que vous faites.

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