我正在处理基于文档的Cocoa应用程序。在启动时,用户将看到一个“欢迎面板”(类型为NSPanel
),并带有用于“创建新文档”和“打开现有文档”等常用操作的按钮。这些操作分别链接到第一响应者的newDocument:
和openDocument:
操作,就像文件菜单中的匹配项目一样。如何在创建或打开新文档时关闭NSPanel?
一切正常......有三个注意事项:
- 欢迎面板创建或打开一个新的文档时没有被驳回。
- 文档窗口在创建时没有焦点。
- 打开文档窗口没有窗口标题栏中显示的打开文件;同样,新文档窗口也不会像预期的那样使用“无标题”,“无标题2”,“无标题3”等标题创建。 (我不只是因为这很烦人提这个,而是因为它可能会产生一些洞察到什么错误。)
我已经部分地通过使我的应用程序控制器的欢迎面板的委托解决#1。当单击“打开现有文档”按钮时,面板会退出其按键状态(因为正在打开文件浏览器对话框),所以我可以在代理人的windowDidResignKey:
方法中关闭面板。但是,我无法弄清楚如何在创建新文档时关闭面板,因为在创建新文档时找不到发布的通知或调用的委托方法。最终,#2仍然是一个问题,因为文档窗口在创建时无法获得焦点。
我只有子类NSDocument
- 我没有使用自定义文档或窗口控制器。我也尝试将面板更改为NSWindow
,认为NSWindow
可能会有不同的行为,但同样的问题正在发生。
其他人可能会回答这个问题,但如果您可以创建并发布示例问题示例应用程序,它将会(并始终)有用。 – ericg 2010-05-13 15:41:49
我会的,但我不认为代码本身是相关的。接口的相关部分是一个nib(所以没有代码),应用程序利用Cocoa的文档框架来完成它的工作,所以应用程序本身的代码相对较少。 – mipadi 2010-05-13 17:13:43