我正在开发一个基于文档的 Cocoa 应用程序。启动时,用户会看到一个“欢迎面板”(类型为NSPanel
),其中包含用于“创建新文档”和“打开现有文档”等常见操作的按钮。这些动作分别链接到第一响应者newDocument:
和openDocument:
动作,就像文件菜单中的匹配项一样。
一切都按预期工作......有三个警告:
- 创建或打开新文档时,欢迎面板不会关闭。
- 文档窗口在创建时没有焦点。
- 打开的文档窗口没有窗口标题栏中显示的打开文件;同样,不会像预期的那样创建带有“Untitled”、“Untitled 2”、“Untitled 3”等标题的新文档窗口。(我提到这一点不仅是因为它很烦人,而且因为它可能会产生一些对出了什么问题的洞察力。)
通过使我的应用程序控制器成为欢迎面板的代表,我已经部分解决了 #1。单击“打开现有文档”按钮时,面板将退出其键状态(因为正在打开文件浏览器对话框),因此我可以在委托的windowDidResignKey:
方法中关闭面板。但是,我不知道在创建新文档时如何关闭面板,因为在创建新文档时找不到发布的通知或调用的委托方法。最终,#2 仍然是一个问题,因为文档窗口在创建时没有获得焦点。
我只有子类NSDocument
——我根本没有使用自定义文档或窗口控制器。我也尝试将面板更改为 an NSWindow
,认为 an 的NSWindow
行为可能有所不同,但同样的问题正在发生。