J'ai un UIView qui est à l'intérieur d'un controller de navigation, j'essaie d'empêcher cette vue d'aller dans le paysage mais la méthode que j'essaye d'utiliser ne tire jamais .. le code est au-dessous n'importe quelle aide serait grandement appréciée.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { if(interfaceOrientation == UIInterfaceOrientationLandscapeRight) { return NO; } else if(interfaceOrientation == UIInterfaceOrientationLandscapeLeft) { return NO; } return NO; }
Vous devriez définir le return NO;
pour le controller de navigation parent ou sur un UIViewController
, pas un UIView
.
En outre, cela fonctionne exactement la même chose avec less de code:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return (interfaceOrientation == UIInterfaceOrientationPortrait); }
Depuis iOS 6, shouldAutorotateToInterfaceOrientation:
est obsolète. Si le controller de vue ne remplace pas la méthode supportedInterfaceOrientations
, UIKit
obtient les rotations par défaut du délégué de l'application ou du file Info.plist de l'application.
Vous devrez utiliser:
- (NSUInteger)supportedInterfaceOrientations NS_AVAILABLE_IOS(6_0);
Une autre option consiste à modifier les informations de deployment.
Cette méthode doit être implémentée dans une instance de UIViewController
, pas un UIView
.
En outre, vous renvoyez NO
pour toutes les orientations, ce qui est incorrect. Vous devez returnner YES
pour au less une orientation (le plus souvent UIInterfaceOrientationPortrait
).