代码之家  ›  专栏  ›  技术社区  ›  Era

nswindow未激活

  •  3
  • Era  · 技术社区  · 14 年前

    我在后台运行的助手工具中创建了一个窗口(它不是一个 .nib Info.plist ,但是是一个普通的可执行文件)。什么时候? -makeKeyAndOrderFront: 调用时,将显示窗口,但它不会像活动窗口一样“弹出”。

    这个能修好吗?

    当做, 埃里克

    1 回复  |  直到 14 年前
        1
  •  1
  •   Yuji    14 年前

    您应该将助手工具作为常规工具包装 .app 至少与 Info.plist . 然后问题就消失了。OS X中的GUI应用程序需要 信息列表 正确接收事件。

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

    许多在跨平台工具包中编译程序的人都面临着这个问题,例如 this discussion here 在wxwidgets wiki中。显然,OS X没有标记不在 应用程序 捆绑作为前台应用程序,这会导致您的问题。你可以用 TransformProcessType 从二进制文件中 应用程序 捆绑成一个可用于前台的应用程序来解决您的问题,但这并不是该功能的文档化/预期用途。

    所以,只要把它包在 应用程序 捆绑。

    更新:

    这种“前景能力”是由 activationPolicy 关于应用程序,请参见 this doc on NSApplication . 在上找到信息 this post on Cocoa with love.