目标c-模态子窗口类似于图纸,但不是图纸



我试图在不实际使用工作表的情况下复制Cocoa中工作表的模式行为。也就是说,将无边界子窗口附加到主窗口,并使子窗口成为唯一的响应程序。父窗口应保持按键状态,支持调整大小,但不能通过键盘或鼠标进行导航/响应。

到目前为止,我已经在主窗口中添加了一个无边界的NSPanel子类,它从-acceptsFirstResponder返回YES,并以模式运行父窗口的子窗口。父窗口仍然是关键窗口(因为NSPanel子类从-canBecomeKeyWindow返回NO),但父窗口仍然有焦点。我可以用键盘选择一个按钮,由于模式子窗口的原因,它什么也不做。我需要子窗口成为第一个响应程序,调用-makeFirstResponder并为该窗口设置-ininitialFirstResresponser视图无效。

NSWindow自Mac OS X 10.2以来就有一个- (void)addChildWindow:(NSWindow *)childWindow ordered:(NSWindowOrderingMode)orderingMode方法。使用NSWindowAbove排序模式应该非常接近您想要的。如果创建子窗口以覆盖父窗口(使子窗口无边框),但保留父窗口的标题栏,则应符合您的要求。如果这是您想要的行为,您可能仍然需要在显示子窗口时禁用与父窗口上的控件的交互。

最新更新