iOS6横向应用程序只有一个控制器多向popViewController问题

Posted

技术标签:

【中文标题】iOS6横向应用程序只有一个控制器多向popViewController问题【英文标题】:iOS6 landscape app with only one controller multioriented popViewController issue 【发布时间】:2013-04-11 22:10:46 【问题描述】:

我的这个设置在我的大多数视图控制器中只支持横向

我的应用委托有这段代码:

-(NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
 
     NSUInteger orientations = UIInterfaceOrientationMaskLandscape;
    if (self.window.rootViewController) 
        UIViewController * pressented = [[((UINavigationController *)self.window.rootViewController) viewControllers] lastObject];
        orientations =[pressented supportedInterfaceOrientations];
    
    return orientations;
 

在大多数视图控制器中:

-(NSUInteger)supportedInterfaceOrientations
 
    return UIInterfaceOrientationMaskLandscape;
 

当我推动这个控制器(我想旋转的那个)时,我的问题出现了:

-(NSUInteger)supportedInterfaceOrientations
 
    return UIInterfaceOrientationMaskALL;
 

它完美地旋转,但是当我弹出视图控制器(点击导航栏的后退按钮)且方向为纵向时,呈现的视图控制器也将其方向设置为纵向。

如何使呈现的视图控制器保持锁定在横向上,或者在弹出之前强制有问题的控制器旋转回横向。

【问题讨论】:

【参考方案1】:

将此添加到您的纵向视图控制器:

-(void)viewWillDisappear:(BOOL)animated

    [super viewWillDisappear:animated];
    UIViewController* dummyController = [[UIViewController alloc] init];
    [self presentViewController:dummyController animated:NO completion:^
        [self dismissViewControllerAnimated:NO completion:nil];
    ];

我知道这是一个 hack,但它确实有效。谁知道更好的解决方案?

【讨论】:

以上是关于iOS6横向应用程序只有一个控制器多向popViewController问题的主要内容,如果未能解决你的问题,请参考以下文章

IOS 6 方向 - 只有一个 Viewcontroller 支持横向和纵向方向 - 否则只支持纵向

在 ios6 和 ios7 的 MPMoviePlayerViewController 中将横向旋转为纵向

在 IOS 6 中使用情节提要以横向模式呈现 modalViewController

在 Objective-C 中的 iOS 6 上强制横向方向

应用程序的第二个(横向)屏幕在 iOS6 中变成纵向

iOS6横向到纵向打破了布局