我有一个基于NIB的NSPanel样式工具面板,我正在创建我的NSDocument窗口的子窗口。我希望它表现得像一个抽屉,因为它看起来像窗口的一部分,只要文档窗口是主窗口,控件就会以活动窗口状态绘制。我还计划定制框架,关闭和放大最小化按钮。
该小组已成为KeyOnlyIfNeeded& excludedFromWindowsMenu设置为YES,其子类从canBecomeKeyWindow返回YES。
面板的NIB包含一个NSSegmentedControl和一个视图,我从另一个NIB中添加了一个视图。我发现分段控件是在窗口处于非活动状态下绘制的,除非单击该面板成为键。
我尝试了OmniGroup的OIInspectorWindow& cocoadev.com的NSWindow页面,实现了一个返回YES的_hasActiveControls方法,但似乎没有效果。然后,我尝试重写isMainWindow,只要父窗口是主窗口(再观察窗口的状态更改通知和调用-display),就返回YES。我希望这会欺骗控制和在活动状态下绘制的窗口框架。在10.7(Lion)上,事实证明控件确实按照我的意愿绘制了活动,尽管窗框不是。在10.8(Mountian Lion)上,即使不是这样,当窗口不是键时,分段控件仍处于非活动状态。
我可以忍受不影响窗框的技巧。关闭按钮,因为我打算定制那些。有没有人知道a)为什么我的技巧在10.8上不起作用以及如何让它工作,或者b)另一种确保我的面板控制在其父窗口为主时始终处于活动状态的方法。