I've got an app where I have a UINavigationController
subclass as my rootViewController
. I've got a UITableViewController
that lets the user edit some settings, it should always be in portrait mode. My app also needs to support all other orientations after I push a MoviePlayer component onto the navigation controller.
The UITableViewController
subclass has this implementation of supportedInterfaceOrientations:
- (NSUInteger)supportedInterfaceOrientations {
LLog();
return UIInterfaceOrientationMaskPortrait;
}
The logging command tells me that this gets actually called.
The problem is that the return value is not respected, i.e. the screen turns to landscape orientation when I turn the device.
What can I do to make the settings view always show in portrait but allow orientation changes for the video viewer?
More information: my UINavigationController
subclass doesn't override shouldAutorotate or supportedInterfaceOrientations. I haven't implemented
- (NSUInteger)application:(UIApplication *)application
supportedInterfaceOrientationsForWindow:(UIWindow *)window
method in my AppDelegate and I have enabled all orientations in the target summary.
Category for
UINavigationController
not working for me. I don't know why. I solve my problem with such category ofUIViewController
:I had issue that some
ViewControllers
in the navigation stack support all the orientations, some only portrait, butUINavigation
controller was returning all app supported orientations, this little hack helped me.You also need to add:
and set the supported rotations for the root view controller in the app plist file to only
portrait
.