1

在 iPad 上基于 TabBar 的应用程序中,我需要显示模式、弹出视图,我通过调用 UIViewController.presentViewController:animated:completion:

在 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;
}

那一点帮助都没有。

我怎么能成为唯一遇到此问题的人?

4

1 回答 1

0

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

我将方法更改为“saveInterfaceOrientation”(并使其无效),问题就消失了。

于 2012-10-21T21:11:54.070 回答