macos - NSApplication 在应用程序开关上制作窗口前面
问题描述
运行我的应用程序(OSX,macOS SDK 10.15)时,它按预期显示主窗口。然后我 CMD-Tab 到另一个应用程序,但是当我 CMD-Tab 回到我的应用程序时,它不会显示窗口。如果我在扩展坞中单击它,也会发生同样的情况。我尝试了各种建议,例如:
[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];
}
我已经在窗口和应用程序委托中设置了所有回调方法,但是当我切换到或从我的应用程序切换时,除了上述回调之外,我什么也没得到。我认为从另一个应用程序切换到应用程序主窗口时显示应用程序主窗口的默认行为。任何帮助是极大的赞赏!
解决方案
我想出了一个解决办法,但我不确定这是否是正确的做法。我注意到如果我打电话
[NSApp finishLaunching]
那么窗口排序功能不起作用。我不需要它的功能,所以我删除了它。此外,我现在正在处理事件类型 NSEventTypeAppKitDefined,它会在您打开和关闭应用程序时调用。然后我检查子类型并调用窗口排序函数:
case NSEventTypeAppKitDefined:
{
if([theEvent subtype] == NSEventSubtypeApplicationActivated) {
[window makeKeyAndOrderFront:nil];
}
}
希望这可以帮助某人!
推荐阅读
- linux - 如何删除转发时间戳?OSE 版本 Syslog-NG
- java - 生产应用的硒替代品
- javascript - 使 fetch 调用真正同步
- python - 如何将一个字节分成上半部分和下半部分
- python - 使用 Python 根据文件中的列数从文件生成 JSON 结构
- java - ProviderInstaller 在模拟器上不起作用,并且未读取捕获的错误
- java - rpm-maven-plugin 需要哪些先决条件?
- azure - 为微服务架构实施 Application Insights
- python - 在 python 中解析文件并删除不需要的行
- javascript - 在另一个提供者中注入一个提供者,相同的模块 #1250