强制iOS方向在一个模态视图控制器上横向移动

Taz*_*Taz 0 iphone objective-c uiinterfaceorientation modalviewcontroller ios

我有一个支持iPad和iPhone的通用应用程序。在iPad上,我支持所有方向;在iPhone上,我仅支持纵向。

我希望一个视图控制器(以模态显示)在iPhone上运行时能以设备所处的任何方向显示。我已经看到许多教程和SO帖子,建议使用-(NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window应用程序委托方法,这似乎可行关于旋转模态视图控制器绝对好。但是,当我在横向模式下关闭模式视图时,整个应用程序仍保持横向模式。

理想情况下,一旦取消模式视图,应用程序应回到纵向模式。

经过调查,似乎-(NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window在关闭视图控制器后未调用回调,而且我不知道为什么。

在这里玩过示例应用程序,并且在关闭视图控制器时触发了回调,但我不知道为什么。我可以看到的唯一区别是我的视图层次结构要复杂得多,并且我显示的是导航控制器,而不是显式的视图控制器,但是我看不到这将如何影响回调。

有什么解决方案的想法吗?

谢谢

f3n*_*1kc 5

您可以尝试使用此方法(在应用商店构建中工作):

[[UIDevice currentDevice] performSelector:@selector(setOrientation:)
                               withObject:(__bridge id)((void*)UIInterfaceOrientationPortrait)];
Run Code Online (Sandbox Code Playgroud)