我在一个在后台运行的帮助工具中创建了一个窗口(它不是一个带有.nib
和Info.plist
的应用程序包,而是一个普通的可执行文件)。调用-makeKeyAndOrderFront:
时,会显示窗口但不会像活动窗口一样“弹出”。
可以修复吗?
此致 埃里克
答案 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}}的信息