gpt4 book ai didi

cocoa - 创建或打开新文档时如何关闭 NSPanel?

转载 作者:行者123 更新时间:2023-12-03 17:26:48 26 4
gpt4 key购买 nike

我正在开发一个基于文档的 Cocoa 应用程序。启动时,用户会看到一个“欢迎面板”(类型为 NSPanel),其中包含用于“创建新文档”和“打开现有文档”等常见操作的按钮。这些操作分别链接到第一响应者的 newDocument:openDocument: 操作,就像"file"菜单中的匹配项一样。

一切都按预期进行......但有三个警告:

  1. 创建或打开新文档时不会关闭欢迎面板。
  2. 文档窗口在创建时没有焦点。
  3. 打开的文档窗口没有在窗口标题栏中显示打开的文件;同样,新的文档窗口不会像预期的那样使用“无标题”、“无标题 2”、“无标题 3”等标题创建。 (我提到这一点不仅是因为它很烦人,而且因为它可能会产生一些对问题所在的洞察。)

通过让我的应用程序 Controller 成为欢迎面板的代表,我已经部分解决了#1。单击“打开现有文档”按钮时,面板将放弃其按键状态(因为正在打开文件浏览器对话框),因此我可以在委托(delegate)的 windowDidResignKey: 方法中关闭面板。但是,我不知道如何在创建新文档时关闭面板,因为在创建新文档时找不到发布的通知或调用的委托(delegate)方法。最终,#2 仍然是一个问题,因为文档窗口在创建时不会获得焦点。

我只有 NSDocument 的子类 - 我根本没有使用自定义文档或窗口 Controller 。我还尝试将面板更改为 NSWindow,认为 NSWindow 的行为可能有所不同,但出现了相同的问题。

最佳答案

创建一个自定义文档 Controller ,并让它了解您的“起点”面板的 Controller ,并在 addDocument: 中隐藏窗口,并在 removeDocument: 中再次显示它(如果没有其他文档) :

这就是我们在Adium Xtras Creator中所做的。该代码位于a BSD license下(与 Adium 本身不同),因此您可以根据需要借用它。

关于cocoa - 创建或打开新文档时如何关闭 NSPanel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2827552/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com