3

我有一个奇怪的问题。我收到一个错误报告,说应用程序因方向更改而崩溃。问题是我根本没有在应用程序代码中注册任何方向事件。我唯一与方向变化有关的是:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return IS_IPAD ? YES : interfaceOrientation == UIInterfaceOrientationPortrait;
}

...在所有视图控制器上,以确保它在 iPad 而不是 iPhone 上改变方向。错误发生在 iPhone 上。

IS_IPAD 来自于此:

#ifdef UI_USER_INTERFACE_IDIOM
    #define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
#else
    #define IS_IPAD (false)
#endif

它似乎-[UIWindow _updateInterfaceOrientationFromDeviceOrientation:]调用了一些不再存在的对象。如果我没有注册任何与方向相关的通知,那会是什么对象?

在此处输入图像描述 在此处输入图像描述

4

1 回答 1

-2

您使用的方法已弃用。该方法shouldAutorotate是新的自转支撑方法。我试过这个,它可以按你的意愿工作:

-(BOOL) shouldAutorotate{
    return IS_IPAD ? YES : [self preferredInterfaceOrientationForPresentation] == UIInterfaceOrientationMaskPortrait;
}

希望能帮助到你 :)

于 2013-07-24T01:57:56.710 回答