2009-10-22 5 views
3

J'ai un contrôleur de barre à onglets gérant 4 onglets. J'ai sous-classé le contrôleur de barre d'onglets de sorte que la méthode shouldAutorotateToInterfaceOrientation: autorise uniquement un contrôleur de vue spécifique dans l'un des onglets à faire pivoter. Tout fonctionne presque bien: les contrôleurs des autres onglets ne tournent pas. Cependant, lorsque le contrôleur de vue qui est autorisé à pivoter tourne réellement, si l'utilisateur appuie sur l'un des onglets restants, le contrôleur de vue correspondant apparaît également pivoté (même si sa méthode shouldAutorotateToInterfaceOrientation: renvoie explicitement NO).Comment empêcher les contrôleurs de vue dans un contrôleur de barre d'onglets de tourner?

Comment puis-je empêcher cela?

Pour être clair, voici un exemple. En tapant sur les onglets 0,1, ou 2 et en essayant de faire pivoter l'appareil, rien ne se passe (correctement). En tapant sur l'onglet 4 et en faisant pivoter l'appareil, la vue associée au contrôleur d'affichage de l'onglet 4 est tournée (correctement). Maintenant, en tenant toujours l'iPhone dans l'orientation du paysage en rotation et en appuyant sur un autre onglet (0,1, ou 2), on voit une vue pivotée (ce qui n'est pas correct et ce que j'essaie d'éviter).

Répondre

1

C'est un souvent rapporté « bug » - mais une bonne solution consiste à forcer le sélecteur shouldAutorotateToInterfaceOrientation: être déclenché comme suit:

- (void)viewDidAppear:(BOOL)animated { 
    UIWindow *window = [[UIApplication sharedApplication] keyWindow]; 
    UIView *view = [window.subviews objectAtIndex:0]; 
    [view removeFromSuperview]; 
    [window addSubview:view]; 
} 
Questions connexes