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];
}
}
希望这对在线下的人有所帮助!
当 运行 我的应用程序(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];
}
}
希望这对在线下的人有所帮助!