我有一个多窗口 Cocoa 应用程序,使用之前 question 的答案中描述的技术来实现。 .
一切正常,但是在初始窗口出现后打开的窗口显示在前面,但它们的状态不是事件的(一切都是灰色的)。我必须在其框架内显式单击才能使它们成为事件窗口。
到目前为止我的支票:
- 我已经尝试过
makeKeyAndOrderFront:
但这没有任何区别。 - NIB 中的文件所有者设置为窗口对应的 Controller 类。
- 我可以在调试器中看到每个 Controller 的实例实际上是相应窗口的所有者。
- NSThread建议的解决方案不会使window键窗口。
- 虽然窗口是 NSWindow 的实例,但
canBecomeKeyWindow
方法返回NO
。 - 该窗口有一个标题栏并且可以调整大小。
我需要做什么才能显示处于事件状态的后续窗口?
编辑:
我使用 SecondaryWindow
子类化 NSWindow
并重写 canBecomeKeyWindow
以返回 YES
。我更改为 XIB 以使用新创建的 NSWindow 子类。使用调试器单步执行代码,但该窗口仍然没有成为关键窗口。
最佳答案
试试这个
[previousWindow orderBack];
[previousWindow resignKeyWindow];
[newWindow orderFront];
[newWindow makeKeyWindow];
- 如果窗口有标题栏或调整大小栏,则它可以成为关键窗口。
如果您的应用程序窗口没有标题栏或调整窗口大小,则 它不能成为关键窗口。
关于cocoa - 如何在 Cocoa 多窗口应用程序中使窗口成为事件窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7734126/