我在后台运行的辅助工具中创建了一个窗口(它不是带有 .nib
和 Info.plist
的应用程序包,而是一个纯可执行文件)。当调用 -makeKeyAndOrderFront:
时,窗口会显示,但它不像活动窗口一样“弹出”。
这个问题能够解决吗?
谢谢, Erik
我在后台运行的辅助工具中创建了一个窗口(它不是带有 .nib
和 Info.plist
的应用程序包,而是一个纯可执行文件)。当调用 -makeKeyAndOrderFront:
时,窗口会显示,但它不像活动窗口一样“弹出”。
这个问题能够解决吗?
谢谢, Erik
您应该将助手工具封装为常规的.app
包,并至少包含一个Info.plist
文件。然后问题就解决了。在OS X中,GUI应用程序需要有一个Info.plist
文件才能正确接收事件。
如果GUI应用程序不在应用程序包中,则其行为方式从未对我来说很清楚。如果我没记错的话,它会随着OS X版本的变化而改变。我认为在以前的OS X版本中,它的表现更糟糕。例如,窗口显示出来了,但我无法在其中单击任何UI。
许多使用跨平台工具包编译程序的人都面临这个问题,例如在 WxWidgets wiki 中这里的讨论。显然,苹果操作系统不会将未打包成.app
的程序标记为前台应用程序,这导致了您的问题。您可以使用 TransformProcessType
从未包含在 .app
bundle 中的二进制文件来创建一个前台应用程序以解决您的问题,但这不是该功能的文档/预期用法。.app
bundle 即可。 "foreground-able-ness" 受应用的 activationPolicy
控制,参见 NSApplication
的文档。 在 Cocoa with love 的这篇文章中找到了相关信息。