我最近遇到了一个问题。我的iPad应用程序以某种方式阻止iPad自动旋转。我的应用程序为两个视图控制器加载一个UISplitView,并为shouldAutorotateToInterfaceOrientation返回YES。我已经建立了我的info.plist,以包含所有四个方向的“支持的界面方向”键。但是,当我运行应用程序时,旋转设备不会旋转splitView(即使我正在接收UIDeviceOrientationDidChangeNotification)。另外,当我以不同的方向退出我的应用程序时,它在iPad主屏幕中开始不会自动旋转到正确的视图,直到我再次旋转它而没有运行我的应用程序....任何想法都将不胜感激...UiSplitViewController不自动旋转
回答
UISplitViewController
是我曾经使用过的最气质的视图控制器子类之一。为了使其“完美”工作,它必须必须作为应用程序窗口中的单个根视图存在。但是,你可以用一些欺骗手段解决这个问题 - 在我的情况下,我需要一个UITabBarController
以及至少两个不同的UISplitViewController
作为视图控制器 - 但是你必须考虑涉及旋转和UISplitViewControllerDelegate
回调没有触发的奇怪情况。
这里的希望,Apple的UISplitViewController
在未来其他UIKit
组件更兼容...
你说你的第一个问题是,UISplitView阻止你自动旋转。尝试使用Splitview的子类,而不是使用ENVILE自动旋转:
@implementation SplitViewControllerRotating
- (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation{
NSLog(@"SplitViewControllerRotating shouldAutorotate");
return YES;
}
@end
你的第二个问题听起来很奇怪。你说退出你的应用程序后,你必须旋转,以便您的iPad识别面向接口。不能帮助你。
我现在有同样的问题。原因是我不小心将的另一个视图添加到了UISplitViewController视图的窗口中。删除额外的视图使其工作。
你的UISplitViewController设置为你的根视图控制器吗?否则,这可能是您的问题的原因。我有一个类似的问题 - 状态栏会旋转,但我的细节和主视图将保持原样。我重新安排了视图,以便UISplitViewController是根,然后我的“主菜单”作为分割视图顶部的模式视图控制器呈现,并且使旋转问题消失。
根据iPad Programming Guide,“分割视图控制器的视图应始终安装为应用程序窗口的根视图。”
希望这会有所帮助。
我碰到了同样的问题有两个下属UINavigationControllers。在我的情况下,旋转开始工作,一旦我取代了shouldAutorotateToInterfaceOrientation:在左侧控制器中总是返回'YES'。
masterView和detailView都需要支持YES,无论您想要旋转的方向如何。如果其中一个没有返回YES,它将不会旋转。我错过了这个微妙的细节,我的masterView只支持肖像。希望这可以帮助别人。 – sasquatch 2012-02-09 16:56:05
我发现这做工精细 - 提供UISplitViewController
的两个孩子实施shouldAutorotateToInterfaceOrientation
:
I.e如果您有类似:
MasterViewController *masterViewController = [[MasterViewController alloc] initWithNibName:@"MasterViewController_iPad" bundle:nil];
UINavigationController *masterNavigationController = [[UINavigationController alloc] initWithRootViewController:masterViewController];
DetailViewController *detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController_iPad" bundle:nil];
UINavigationController *detailNavigationController = [[UINavigationController alloc] initWithRootViewController:detailViewController];
self.splitViewController.viewControllers = @[masterNavigationController, detailNavigationController];
self.window.rootViewController = self.splitViewController;
来定义你的NSApplication
的rootViewController
那么两个MasterViewController
和DetailViewController
应该实现:
(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
return YES;
}
,以确保旋转的作品。
- 1. UISplitViewController - 有没有自定义实现自动旋转的方法?
- 2. UISplitViewController没有正确旋转
- 3. UISplitViewController与模式segue不旋转
- 4. 当modalView旋转时,iPad的UISplitViewController旋转不好
- 5. MPMovieViewController不自动旋转
- 6. UIScrollView不会自动旋转
- 7. MPMoviePlayerViewController不会自动旋转
- 8. 手动旋转UIViews而不是自动旋转
- 9. MPMoviePlayerController自动旋转?
- 10. 旋转自动化
- 11. UIViewController自动旋转?
- 12. 使Android旋转木马自动旋转
- 13. Modal在旋转后消失UISplitViewController
- 14. UISplitViewController EXC_BAD_ACCESS上旋转使用ARC
- 15. UISplitViewController询问照片许可旋转时
- 16. UISplitViewController无法识别设备旋转
- 17. 带UIPopoverController的UISplitViewController在旋转时崩溃
- 18. 自动滚动(旋转)UL
- 19. 旋转屏幕而不开启自动旋转
- 20. iOS5打破UISplitViewController旋转回调,如何手动调用?
- 21. Krpano自动旋转不起作用
- 22. 布局不会自动旋转
- 23. 分类? UITabBarController不会自动旋转
- 24. iOS 5自动旋转不起作用
- 25. UIWindow子视图不会自动旋转
- 26. Ipad模拟器不自动旋转
- 27. 自动旋转不起作用ios6.1
- 28. UIViewController自动旋转不起作用
- 29. android动画旋转不会旋转ccw
- 30. IOS旋转设备不旋转动画
你可以绕过它欺骗你说...什么欺骗?你逗弄! – radven 2012-07-12 10:11:19
它只是手动转发适当的旋转方法。记录一堆东西,看看有什么方法,我们没有被调用。然后,我只是在我的根视图控制器子类中进行补偿,确保子视图控制器获得了正确的方法,调整了视图的大小等。 – LucasTizma 2012-07-12 14:05:07
我现在有同样的问题,有我的SplitViewController,它们是TabBarController下的选项卡,行为不稳定,所以很高兴知道这不仅仅是我!至少感谢这种安慰! – Gowiem 2013-04-11 22:46:21