2010-05-12 8 views
1
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 

Mon code obtient cet événement plus d'une fois pendant la rotation du périphérique. Je cherche dans les docs d'Apple pour la référence mais semble pas chanceux. Quelqu'un pourrait-il donner une idée de ce qui se passe?shouldAutorotateToInterfaceOrientation est toujours appelé plusieurs fois

Mon code est un exemple de code Apple (AlternateViews), sans aucune modification sauf pour certains journaux.

Répondre

3

Je suis nouveau sur iPhone dev, mais je pense que la raison pour laquelle il est appelé de nombreuses fois est que shouldAutorotateToInterfaceOrientation n'est pas un événement. Il est simplement destiné à prendre un UIInterfaceOrientation et renvoyer YES ou NO selon que l'autorotation est prise en charge ou non.

Le Apple docs montrent que UIInterfaceOrientation est défini comme:

typedef enum { 
    UIInterfaceOrientationPortrait   = UIDeviceOrientationPortrait, 
    UIInterfaceOrientationPortraitUpsideDown = UIDeviceOrientationPortraitUpsideDown, 
    UIInterfaceOrientationLandscapeLeft  = UIDeviceOrientationLandscapeRight, 
    UIInterfaceOrientationLandscapeRight  = UIDeviceOrientationLandscapeLeft 
} UIInterfaceOrientation; 

Donc tout ce que vous êtes censé remplacer cette méthode avec est quelque chose qui vérifie interfaceOrientation pour un ou plusieurs de ce qui précède, et dit si oui ou non la vue devrait autorotate à elle.

+0

Merci pour votre aide. Étant donné que mon code est téléchargé à partir d'un échantillon de pomme, la vérification d'orientation a déjà été effectuée. Je me demande juste pourquoi cette méthode est appelée avec la même orientation plus d'une fois? Je ne comprends pas très bien: "ce n'est pas un événement". Pourriez-vous m'en parler? Apprécié. – user268743

+0

@lovecactus Un événement est une action, comme un appui sur un bouton. Il est destiné à déclencher une série d'autres actions de l'interface utilisateur. 'shouldAutorotateToInterfaceOrientation' n'est pas censé être une série d'actions, mais est simplement destiné à retourner si la vue doit ou non tourner automatiquement. En fait, la méthode ne devrait pas avoir d'effets secondaires. Voyez-vous le contraste? – avpx

+0

Wow! merci pour UIInterfaceOrientationLandscapeLeft = UIDeviceOrientationLandscapeRight, UIInterfaceOrientationLandscapeRight = UIDeviceOrientationLandscapeLeft –

4

Si vous renvoyez NON pour une orientation, il continuera à essayer jusqu'à ce que vous reveniez à OUI. Par exemple, si vous renvoyez NON pour le paysage, il est possible que le paysage soit modifié. Si vous renvoyez NON pour tout, alors il ne tournera pas. Et cette méthode peut être appelée à des moments arbitraires, pas strictement quand la rotation se produit. Par exemple, lorsqu'une nouvelle vue apparaît sur un contrôleur de navigation, la nouvelle vue est interrogée même si aucune rotation n'a eu lieu.

+0

Merci pour votre aide. Cependant j'ai noté l'orientation dans cette méthode. Quand une rotation est déclenchée, cette méthode serait appelée avec la même orientation. Cela semble un peu différent de votre réponse, ou je l'ai mal compris? – user268743

+0

"cette méthode peut être appelée arbitrairement" couvre à peu près tout. Le système ne documente pas qu'il sauvegardera la réponse, de sorte qu'il pourrait être appelé plus d'une fois sur un seul contrôleur de vue dans une rotation unique. – drawnonward

Questions connexes