模态 sheet 在 applicationdidfinishlaunching 中不工作?

Modal sheet not working in applicationdidfinishlaunching?

我正在尝试让 sheet 在应用程序完成启动时以模态方式显示。如果我将代码放在通用操作中并在应用程序启动后的某处执行它,它会按预期工作并且 sheet 会很好地下降。如果我采用相同的代码并将其放在 applicationdidfinishlaunching 中,sheet 将显示为单独的 window(这不是我需要的)。

 [NSApp beginSheet:settingsWindow
   modalForWindow:[NSApp keyWindow]
    modalDelegate:nil
   didEndSelector:nil
      contextInfo:nil];
[NSApp runModalForWindow:settingsWindow];

[NSApp endSheet:settingsWindow];
[settingsWindow orderOut:self];

启动时可见选项已禁用。感谢您的任何建议。我也在 awakefromnib 中尝试过,结果同样不正确。

编辑:使用[self performSelector:@selector(someAction:) withObject:self afterDelay:0.5];其中 someAction 的内容如上,产生正确的结果。这是为什么?

NSAppbeginSheet: modalForWindow: modalDelegate: didEndSelector: contextInfo:endSheet:deprecated in OS X 10.10. You should instead use beginSheet: completionHandler: on NSWindow模态显示sheetwindow的实例。

NSWindow *mainWindow = [NSApp windows][0]; 
[mainWindow beginSheet:settingsWindow completionHandler: nil];

顺便问一下,[NSApp keyWindow] return 是 didFinishLaunching 中的一个实例吗?