在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;
}
这一点都没有帮助。
我怎样才能成为唯一经历过这个问题的人?
答案 0 :(得分:0)
问题结果出现在我的UITabBarController子类中。我不小心覆盖了“interfaceOrientation”的getter方法 - 我创建了一个名字的getter,但是把它称为(void)方法(甚至没有查看返回值)。该方法旨在更新包含当前方向的app范围变量,并且我从名为viewDidRotate的方法调用它,该方法是UIDeviceOrientationDidChangeNotification通知的观察者。
我改为将方法改为“saveInterfaceOrientation”(并使其成为空白),问题就消失了。