NSWindow不激活

时间:2010-09-19 22:20:44

标签: cocoa

我在一个在后台运行的帮助工具中创建了一个窗口(它不是一个带有.nibInfo.plist的应用程序包,而是一个普通的可执行文件)。调用-makeKeyAndOrderFront:时,会显示窗口但不会像活动窗口一样“弹出”。

可以修复吗?

此致 埃里克

1 个答案:

答案 0 :(得分:1)

您应该将帮助工具包装为至少.app的常规Info.plist捆绑包。然后问题就消失了。 OS X中的GUI应用程序需要Info.plist才能正确接收事件。

如果不是在应用程序包中,GUI应用程序行为不端的方式对我来说从来都不清楚。如果我没记错的话,它会随着时间的推移而改变,具体取决于OS X的版本。我认为它在以前版本的OS X中表现得更糟。例如,显示的窗口但我无法点击其中的任何UI。

许多在跨平台工具包中编译程序的人都遇到了这个问题,例如, WxWidgets wiki中的this discussion here。显然,OS X没有将不在.app包中的程序标记为前台应用程序,这会导致您的问题。您可以使用二进制文件中的TransformProcessType而不是.app包中的this doc on NSApplication.来创建一个前台应用程序来解决您的问题,但这不是此函数的文档/预期用法。

所以,只需将其包装在.app包中。

更新

此“前景能力”由应用的activationPolicy控制,请参阅this post on Cocoa with love.找到有关{{3}}的信息