为什么我的弹出窗口在iOS 6上使用presentViewController上下颠倒:动画:

时间:2012-10-19 04:57:28

标签: ipad ios6

在iPad上基于TabBar的应用程序中,我需要显示模态,弹出视图,我通过调用UIViewController.presentViewController进行操作:动画:完成:

在iOS5上,这很好用。但是在iOS6上 - 当设备颠倒时 - 弹出视图显示为颠倒。它从显示屏的顶部向下动画,颠倒过来。

当我说设备颠倒时,我的意思是LandscapeLeft(左边的按钮)和PortraitUpsideDown(顶部的按钮)。在另外两个方向中,弹出窗口从底部开始动画,并且正如您所期望的那样正面朝上。

我在我的应用程序中使用的所有3个弹出视图都出现问题 - 其中2个是UIViewController的子类,第3个是MFMailComposeViewController。

我使用这样的代码来显示视图:

MyModalViewController * tmpModal = [[MyModalViewController alloc] init];
tmpModal.modalPresentationStyle = UIModalPresentationFormSheet;
tmpModal.contentSizeForViewInPopover =  CGSizeMake(350,450);

[self.tabBarController presentViewController:tmpModal
                                    animated:TRUE
                                  completion:^
                                        {


                                        }];

我已经将iOS6旋转委托方法添加到基于2个UIViewController的视图中,但它没有任何效果。

IE:

-(NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskAll;
}

这一点都没有帮助。

我怎样才能成为唯一经历过这个问题的人?

1 个答案:

答案 0 :(得分:0)

问题结果出现在我的UITabBarController子类中。我不小心覆盖了“interfaceOrientation”的getter方法 - 我创建了一个名字的getter,但是把它称为(void)方法(甚至没有查看返回值)。该方法旨在更新包含当前方向的app范围变量,并且我从名为viewDidRotate的方法调用它,该方法是UIDeviceOrientationDidChangeNotification通知的观察者。

我改为将方法改为“saveInterfaceOrientation”(并使其成为空白),问题就消失了。