Arrêtez UIView de roating dans le paysage

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:

iOS 5.x

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

iOS 6

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.

Capture d'écran

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 ).