我有四个控制器用于标签栏和它的视图,当我旋转手机时,我希望它只为一个控制器调用方法shouldAutorotateToInterfaceOrientation但是它为所有控制器调用方法。
如何只为其中一个控制器调用shouldAutorotateToInterfaceOrientation?
答案 0 :(得分:1)
你没有“调用”这些方法,那些是从UIViewController继承的任何类调用的方法。
无论如何都没有理由不让他们被召唤。
您可以做的是决定为您的任何控制器覆盖任何这些方法
该方法返回一个布尔值,如果返回true,则视图正在旋转,如果返回false,则不是。
您还可以决定根据方向返回YES / NO,以支持一个特定的方向
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
在这种情况下,仅当新方向为纵向时才会旋转视图。
答案 1 :(得分:0)
谢谢 JP Hribovsek ,我使用beginGeneratingDeviceOrientationNotifications
解决了它,当设备的方向发生变化时通知我。例如:
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver: self
selector: @selector(deviceRotate:)
name: UIDeviceOrientationDidChangeNotification
object: nil];
-(void) deviceRotate: (NSNotification*) notification
{
UIDeviceOrientation interfaceOrientation = [[UIDevice currentDevice] orientation];
if (interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight) {
NSlog(@"Landscape");
}
}