我正在使用Cocoa API为Mac创建一个简单的文本编辑器,并且所有工作都正常。唯一的问题是关闭菜单项总是禁用。我应该在文档控制器中实现一些委托方法吗?任何已经有这个问题的人?如何在基于Cocoa文档的应用程序中关闭文档?
0
A
回答
0
我终于明白了。问题是我的基于文档的应用程序的每个窗口都是无边界的,最近我读到无边界窗口无法通过菜单项(或Cmd-W键)发送到firstResponder的performClose:
方法关闭。所以我不得不来实现在窗口的子类的一些其他方法:
- (void)performClose:(id)sender {
[documentClass canCloseDocumentWithDelegate:self shouldCloseSelector:@selector(document:shouldClose:contextInfo:) contextInfo:NULL];
}
- (void)document:(NSDocument*)doc shouldClose:(BOOL)shouldClose contextInfo:(void*)contextInfo {
if (shouldClose)
[doc close];
}
- (BOOL)validateMenuItem:(NSMenuItem *)menuItem {
return ([menuItem action][email protected](performClose:))?YES:[super validateMenuItem:menuItem];
}
- (BOOL)canBecomeMainWindow {
return YES;
}
- (BOOL)canBecomeKeyWindow {
return YES;
}
最后两个方法确保该窗口可以获取焦点以及其他一些功能可以执行(像textviews查找命令)。
0
Close菜单项没有将-performClose:方法发送到“First Responder”对象(最终成为NSWindow)?我在过去注意到,如果菜单项没有他们的行为目标,它们会显示为灰色。
相关问题
- 1. cocoa基于文档的应用程序
- 2. 基于文档的Cocoa应用程序中的文档类型
- 3. 避免在基于文档的Cocoa应用程序中耦合?
- 4. 在Cocoa应用程序上禁用基于文档的功能
- 5. 关于Cocoa应用程序目录布局的文档?
- 6. 单文档界面基于可可应用程序的文档
- 7. 在非基于文档的应用程序中使用核心数据 - Cocoa
- 8. 默认保存在基于Cocoa文档的应用程序中文档的位置
- 9. 使用窗口的文档图标弹出菜单的基于Cocoa文档的应用程序中的错误
- 10. 如何在基于文档的应用程序
- 11. 在Swift基于文档的应用程序中重命名文档类
- 12. 在基于文档的应用程序中管理上下文相关的NSMenu
- 13. Domino 6.5 - 关闭框架集文档 - 关闭应用程序
- 14. 基于文档的应用程序:哪个是关键窗口?
- 15. 如何使用XCTest测试基于文档的应用程序?
- 16. NSDocumentController如何插入我的基于文档的应用程序?
- 17. 在基于文档的mac应用程序中,如何获取无标题文档的临时文件夹?
- 18. 将基本的Cocoa应用程序转换为基于文档的应用程序
- 19. 在基于文档的应用程序中保存ManagedObjectContext?
- 20. NSUndoManager在基于非文档的应用程序中
- 21. 无法保存在基于文档的应用程序中
- 22. 在IPython中关闭文档
- 23. 具有多种文档类型的可可基于文档的应用程序
- 24. 关于在Google Play中启动应用程序的文档
- 25. NSDocument *类仅适用于基于文档的应用程序吗?
- 26. 基于文档的应用程序中的不同菜单栏
- 27. 连接基于文档的应用程序中的菜单项
- 28. 基于文档的应用程序中的NSNotificationCenter
- 29. 基于文档的应用程序中的NSUndoManager错误行为
- 30. Cocoa应用程序的文档相关操作应该在哪里实施?