我将 NSWindow 的自定义子类的 childWindow 添加到 parentWindow(也是 NSWindow 的自定义子类)。childWindow 具有 NSBorderlessWindowMask 和 canBecomeKeyWindow: 被覆盖以返回 YES 和 canBecomeMainWindow: 以返回 NO。
childWindow 设置为与 parentWindow 一起调整大小。所以我想创造一种错觉,即 childWindow 的视图是 parentWindow 的一部分。主要思想是将由基于文档的应用程序创建的文档窗口安排在一个主窗口中,以提供一个选项卡式界面(就像在浏览器中一样)以在文档之间切换。
我的问题是,每当我单击 childWindow 的一个视图时,parentWindow(主窗口)就会失去焦点,并且交通灯按钮变灰。这显然与我想要达到的目标背道而驰。
我找到了这个答案: Make NSView in NSPanel first responder without key window status
但是,即使我覆盖 isKeyWindow:(主窗口的)以始终返回 YES,但当我单击 childWindow 时,标题栏仍然显示为灰色。
我也尝试遵循这个建议: http: //www.cocoabuilder.com/archive/cocoa/143945-non-focused-child-window.html
但我不确定“在其 nextResponder 之前的响应者链中包含子窗口”是什么意思。使用 canBecomeKeyWindow: 返回 NO(对于 childWindow),孩子中的视图永远不会成为键并且总是灰色的。
任何线索我做错了什么?
一个补充:是否可以在不提供 childWindow 键状态的情况下在 childWindow FirstResponder 中创建视图?