AppDelegate“意外的零窗口”错误

Posted

技术标签:

【中文标题】AppDelegate“意外的零窗口”错误【英文标题】:AppDelegate "unexpected nil window' error 【发布时间】:2016-11-22 04:25:37 【问题描述】:

编辑: 人们投票反对是因为我使用了睡眠,这就是我使用它的原因:

Making the launch image display longer xcode

窗口很小。如果您不想回答,请不要投反对票。 我只是想摆脱这个错误。

_UIApplicationHandleEventFromQueueEvent 中出现意外的 nil 窗口, _windowServerHitTestWindow: UIClassicWindow: ;帧 = (0 0; 320 568);用户交互启用 = 否;手势识别器 = NSArray: > ;层= UIWindowLayer:>>


我有一个 ios 应用程序,它可以在 iPad 和 iPhone 上以横向模式运行。它在 ipad 模拟器上运行良好,但在 iphone 5s 和 iphone 6s(到目前为止我已经测试过)上,我得到了这个错误:

_UIApplicationHandleEventFromQueueEvent 中出现意外的 nil 窗口, _windowServerHitTestWindow: UIClassicWindow: ;帧 = (0 0; 320 568);用户交互启用 = 否;手势识别器 = NSArray: > ;层= UIWindowLayer:>>

这是 AppDelegate 代码。我在 ipad 上没有任何问题。

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

//   [NSThread sleepForTimeInterval:3];

    [application setStatusBarHidden:YES];
    self.window = [UIWindow new];       

    if([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad) 

        self->_loginViewController = [[LoginViewController alloc] initWithNibName:@"somename~ipad" bundle:nil];

     else if([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPhone) 

        self->_loginViewController = [[LoginViewController alloc] initWithNibName:@"somename~iphone" bundle:nil];
    

    [[NSUserDefaults standardUserDefaults] setValue:@(NO) forKey:@"_UIConstraintBasedLayoutLogUnsatisfiable"];

    self.window.rootViewController = nil;
    self.window.rootViewController = self->_loginViewController;

    [[UINavigationBar appearance] setBarTintColor:[UIColor blackColor]];
    [[UINavigationBar appearance] setTranslucent:NO];

    [self.window makeKeyAndVisible];
    [self.window setFrame:[[UIScreen mainScreen] bounds]];
    return YES;

【问题讨论】:

永远不要在主线程上休眠。 看到这个***.com/questions/25963101/… @rmaddy 我有一个启动图像。我想让它显示 3 秒,所以我把它放了。 @Anbu.Karthik 我在那篇文章中尝试了解决方案。不幸的是,它对我不起作用 在您的根控制器中显示相同的图像。设置一个计时器,让它在 3 秒内关闭。当计时器响起时,移除图像。 【参考方案1】:

我发现我收到“unexpected nil window”错误,因为我正在为我的横向应用程序使用资产目录。

https://developer.apple.com/library/content/technotes/tn2244/_index.html#//apple_ref/doc/uid/DTS40009012

避免使用资产目录来管理横向的启动图像 应用程序。 除了 iPhone 6 Plus 使用的启动图像, 资产目录假定所有 iPhone 启动图像都用于 纵向。

【讨论】:

以上是关于AppDelegate“意外的零窗口”错误的主要内容,如果未能解决你的问题,请参考以下文章

向 AppDelegate 添加协议未注册

在 AppDelegate 中切换 ViewController - 不显示

如何在 AppDelegate 中使用 Parse 正确设置 Facebook iOS SDK?

我应该将 appDelegate 用于所有单例样式的应用程序级代码吗?

AppDelegate Swift 中的选项卡式应用程序和核心数据函数

Xcode & Swift - 无法从 AppDelegate 实例化另一个视图控制器