shouldAutorotateToInterfaceOrientation不起作用
我一直在肖像模式下写我的通用应用程序,现在约15笔尖文件,许多viewCotnrollers,我想实现shouldAutorotateToInterfaceOrientation并devise一些屏幕在横向模式。
join:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return YES; }
到我的所有viewControllers,不做的工作。
在debugging期间,我看到这个方法被调用,但它不会工作! 不在模拟器中,不在设备中,不在Iphone中,不在Ipad中!
我在论坛中search了一些答案,并看到一些build议使用:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return (interfaceOrientation == UIInterfaceOrientationPortrait || interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight || interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown ); }
也没有工作,
添加:
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
和
[[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications];
到我的viewDidLoad和viewDidUnload分别没有任何工作。
我迷路了..任何帮助都行!
只是一个更多的信息...所有我的意见是typesUIControl,因为我需要TuchUpInside工作。
Appriciate你的帮助。
确保你所有的父视图都有autoresizesSubviews = YES。 如果您没有在IB中为所有视图设置弹簧和支撑,则可能需要在代码中执行此操作。
引用Interface Builder用户指南:
重要提示:在Cocoa nib文件中,如果您在Interface Builder中没有为您的视图设置任何弹簧或支柱,但是在运行时使用setAutoresizingMask:方法添加自动调整行为,您的视图可能仍然不会显示正确的自动调整行为。 原因是如果这些孩子没有设置弹簧和支柱,界面生成器会禁用父视图的子项的自动调整。 要再次启用自动调整行为,您必须将YES传递给父视图的setAutoresizesSubviews:方法。 这样做后,子视图应该正确自动大小。
其他一些事情要注意:
-
如果UINavigationController的根视图控制器也设置为自动旋转,则它只会自动旋转。
-
如果所有视图控制器都设置为自动旋转,UITabBarController将只会自动旋转。
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { UIInterfaceOrientation des=self.interfaceOrientation; if(UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad) //iPad { if(des==UIInterfaceOrientationPortrait||des==UIInterfaceOrientationPortraitUpsideDown)//ipad-portairait { } else//ipad -landscape { } } else//iphone { UIInterfaceOrientation des=self.interfaceOrientation; if(des==UIInterfaceOrientationPortrait||des==UIInterfaceOrientationPortraitUpsideDown) //iphone portrait { } else //iphone -landscape { } } return YES; }
你在为哪个iOSbuild设? 它在iOS 6.0中已被弃用。 (您应该重写supportedInterfaceOrientations和preferredInterfaceOrientationForPresentation方法。)
你也可以在UIViewController类上调用shouldAutorotate:
确保您已经在项目设置的“Summery”选项卡中检查了支持的界面方向(在顶部的“Project Navigator”中select项目名称)。
如果你没有select你想在这里使用的方向,那么模拟器/ iPhone将不允许屏幕改变方向。
我有这个问题,但它在iOS6,但不是iOS5。 原来,我在故事板中有一个视图,我还没有创build视图控制器类。
…最后但并非最不重要,确保你没有激活设置“肖像取向locking”在你的testing设备(当然不适用于模拟器),这将禁止在任何应用程序旋转shouldAutorotateToInterfaceOrientation
回报。