转自:http://stackoverflow.com/questions/13588325/shouldautorotate-method-not-called-in-ios6
参考1:http://stackoverflow.com/questions/21088956/supportedinterfaceorientations-not-called-with-ios-7
参考2:http://stackoverflow.com/questions/12775265/ios-6-shouldautorotate-is-not-being-called
If you have a Navigation Controller managing these views, the shouldAutorotate method won‘t be called. You would have to subclass UINavigationController and override methods shouldAutorotate andsupportedIntervalOrientations.
From the docs:
Now, iOS containers (such as UINavigationController) do not consult their children to determine whether they should autorotate
Edit-----
As mentioned below by Lomax, subclassing UINavigationController is discouraged by Apple. You should try a category instead (this SO question explains it well):
@implementation UINavigationController
-(BOOL)shouldAutorotate
{
// your code
}
-(NSUInteger)supportedInterfaceOrientations
{
(...)
}
@end