NSApplication make window front on app switch

NSApplication make window front on app switch

当 运行 我的应用程序(OSX,macOS SDK 10.15)时,它按预期显示主要 window。然后我用 CMD-Tab 切换到另一个应用程序,但是当我用 CMD-Tab 切换回我的应用程序时,它不会显示 window。如果我在停靠栏中单击它,也会发生同样的情况。 我尝试了各种建议,例如:

[NSApp activateIgnoringOtherApps:YES];
[window makeKeyAndOrderFront:nil];
[window orderFrontRegardless];

[[[NSWorkspace sharedWorkspace] notificationCenter] addObserver:self selector:@selector(applicationSwitchedTo) name:NSWorkspaceDidActivateApplicationNotification object:nil];

-(void)applicationSwitchedTo
{
    [window makeKeyAndOrderFront:nil];
}

我已经在 window 和应用程序委托中设置了所有回调方法,但是当我切换到我的应用程序或从我的应用程序切换时,除了上述回调之外我没有得到任何东西。我认为当从另一个应用程序切换到它时,显示应用程序主 window 是默认行为。非常感谢任何帮助!

我找到了解决办法,但我不确定这样做是否正确。 我注意到如果我调用

[NSApp finishLaunching]

然后 window 排序函数不起作用。我不需要它的功能,所以我删除了它。 此外,我现在正在处理事件类型 NSEventTypeAppKitDefined,它会在您打开和关闭应用程序时调用。然后我检查子类型并调用 window 排序函数:

case NSEventTypeAppKitDefined:
{
     if([theEvent subtype] == NSEventSubtypeApplicationActivated) {
          [window makeKeyAndOrderFront:nil];
     }
}

希望这对在线下的人有所帮助!