1

我的应用程序中的视图仅是纵向的 - 我的视图控制器和根视图控制器都确保它们仅使用两者旋转到纵向方向shouldAutorotateToInterfaceOrientation:supportedInterfaceOrientations以便同时支持 iOS 5 和 iOS 6。我在视图中添加了 iAd 横幅,它正确显示在屏幕顶部。当我点击它以在 iPad 上查看测试广告时,测试广告以横向显示,这是我所期望的 - 我知道 iAd 可能是任何方向的。但是当我关闭广告时,我的视图是横向的,带有横幅的视图和根视图控制器的视图。当我旋转设备时,它们会旋转回纵向并停留在那里。

如何防止 iAd 旋转我的视图,或在 iAd 关闭时让我的视图恢复为纵向?

编辑:我也尝试过使用application:supportedInterfaceOrientationsForWindow:并设置shouldAutoRotate为 true - 都不能解决问题。

再次编辑:我仍然没有运气。这是一个具有相当少的视图控制器实现的项目,它显示了我遇到的错误 - 感谢任何帮助!

4

3 回答 3

0

我会尝试两件事。首先在应用程序的目标配置(摘要)中设置“支持的界面方向”。

然后对于界面构建器中的每个视图,在模拟指标(属性面板上的 4 个选项卡)下确保选择了纵向。如果您选择了“推断”,那么它将在显示自身时采用先前的屏幕方向。

于 2013-03-26T12:49:08.040 回答
0

解决了。我的辅助视图控制器必须是主视图控制器的子视图控制器。

于 2013-04-02T23:40:22.957 回答
0

我以为我会推送更新,因为我终于修复了这个问题,这适用于 iOS 8 和 9,首先注册应用程序以跟踪设备方向。

AppDelegate.m:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];

    return YES;
}

现在,当广告完成显示时,您可以检查设备方向并将其强制恢复为纵向。

-(void)bannerViewActionDidFinish:(ADBannerView *)banner{

            UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];

            if (UIDeviceOrientationIsLandscape(orientation)) {

                NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationPortrait];
                [[UIDevice currentDevice] setValue:value forKey:@"orientation"];
            }

            //NSLog(@"iAD actions finished");
    }
于 2016-02-25T12:34:15.193 回答