2

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

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

到目前为止我的检查:

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

我需要做什么才能显示处于活动状态的后续窗口?

编辑:

NSWindow使用SecondaryWindow并重写canBecomeKeyWindow为 return YES。我更改为 XIB 以使用新创建的NSWindow. 使用调试器单步执行代码,但窗口仍然没有成为关键窗口。

4

1 回答 1

0

尝试这个

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

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

于 2011-10-12T18:51:07.827 回答