The problem was solved using by setting the Supported Interface Orientations to all I need (Portrait, Landscape right and left) and adding one Category
of UINavigationController
.
I added the Category to any occurrence of UINavigationController
that I want to stay on Portrait mode and treated the iOS 6 rotation like this post:
@implementation UINavigationController (Rotation_IOS6)
-(BOOL)shouldAutorotate
{
return NO;
}
-(NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationPortrait;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return UIInterfaceOrientationPortrait;
}
@end
With this implemented I still have some problems because the code was like this:
[self.window.rootViewController presentModalViewController:controller animated:NO];
instead of this:
[self.navigationController pushViewController:controller animated:NO];
With the above changes I was able to keep the entire app on Portrait Mode and let the video player views to keep rotating because their methods (shouldRotate and supportedInterfaceOrientations) weren't overridden.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…