Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

preferredInterfaceOrientationForPresentation must return a supported interface orientation

Tags:

ios

cocoa

ios6

This error doesn't make sense, as the preferred orientation UIInterfaceOrientationLandscapeRight is returned by the supported orientation

//iOS6  -(BOOL)shouldAutorotate {     return NO; }  -(NSUInteger)supportedInterfaceOrientations {     return (UIInterfaceOrientationLandscapeRight | UIInterfaceOrientationLandscapeLeft); }  - (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {     return UIInterfaceOrientationLandscapeRight; } 

Error :

Terminating app due to uncaught exception 'UIApplicationInvalidInterfaceOrientation', reason: 'preferredInterfaceOrientationForPresentation must return a supported interface orientation!'

like image 713
Peter Lapisu Avatar asked Oct 02 '12 13:10

Peter Lapisu


2 Answers

Your code should look like this:

-(BOOL)shouldAutorotate {     return NO; }  -(NSUInteger)supportedInterfaceOrientations {     return UIInterfaceOrientationMaskLandscape; }  - (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {     return UIInterfaceOrientationLandscapeRight; } 

Also, make sure in your Info.plist you have set the correct orientations for you app because what you return from supportedInterfaceOrientations is intersected with the Info.plist and if it can't find a common one then you'll get that error.

like image 130
lmirosevic Avatar answered Sep 24 '22 23:09

lmirosevic


supportedInterfaceOrientations is only called, if shouldAutorotate is set to YES

- (BOOL)shouldAutorotate {     return YES; }  - (NSUInteger)supportedInterfaceOrientations {     return UIInterfaceOrientationMaskLandscape; }  - (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {     return UIInterfaceOrientationLandscapeRight; } 

The easiest approach for me, is only to set the Info.plist

info.plist

If you like to support iOS 5 use this code in your view controllers.

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return UIInterfaceOrientationIsLandscape(interfaceOrientation); } 
like image 41
coco Avatar answered Sep 22 '22 23:09

coco