如何在Cocoa多窗口应用程序中将窗口设置为活动窗口?

时间:2011-10-12 00:45:30

标签: cocoa multi-window

我有一个多窗口Cocoa应用程序,使用前一个question的答案中描述的技术实现。

一切正常,但是在初始窗口出现后窗口打开并显示在前面,但是它们的状态不活跃(一切都是灰色的)。我必须在其框架内明确单击以使它们成为活动窗口。

到目前为止我的检查:

  • 我尝试makeKeyAndOrderFront:,但这没有任何区别。
  • NIB中的文件所有者设置为窗口的相应控制器类。
  • 我可以在调试器中看到每个控制器的实例实际上是相应窗口的所有者。
  • NSThread建议的解决方案不会成为窗口密钥窗口。
  • 方法canBecomeKeyWindow返回NO,尽管该窗口是NSWindow的一个实例。
  • 窗口有一个标题栏,可以调整大小。

如何将后续窗口显示为活动状态,我需要做什么?

编辑:

我使用NSWindowSecondaryWindow子类化,并覆盖canBecomeKeyWindow以返回YES。我更改为XIB以使用新创建的NSWindow子类。使用调试器逐步执行代码,但窗口仍然不会成为关键窗口。

1 个答案:

答案 0 :(得分:0)

试试这个

[previousWindow orderBack];
[previousWindow resignKeyWindow];
[newWindow orderFront];
[newWindow makeKeyWindow];
  • 如果窗口有标题栏或调整大小栏,则窗口可以成为关键窗口。

如果您的应用程序窗口没有标题栏或调整大小窗口,那么    它不能成为关键窗口。