如何让我的(非基于文档的)应用程序响应openFile:withApplication:?

时间:2011-08-16 00:37:26

标签: cocoa macruby

我有一个应用程序,它是一个单窗口,非基于文档的应用程序。

我想让它响应NSWorkspace-openFile:withApplication:,但仅当路径指向文件夹时,还要实现File-> Open菜单。我无法追踪如何执行此操作(无需成为基于文档的应用程序)。

2 个答案:

答案 0 :(得分:1)

只需在Interface Builder中检查Open菜单项连接的操作。如果我没记错的话,它将连接到“First Responder”对象和方法open:。是吗?

在这种情况下,只需在AppDelegate类中实现open:方法即可。 (要理解该方法归于代表的原因,请阅读Hillegass的书中的“无目标行为”,或在此处阅读:http://www.cocoadev.com/index.pl?NilTargetedAction。要记住的事情是在IB中连接到“第一响应者”的控件是实际上IB表示目标是零的方式。)

请注意,您必须使用NSOpenPanel自己实现打开的面板 - 请参阅此处的一些代码:NSOpenPanel setAllowedFileTypes

如果这与您在openFile:withApplication:中执行的操作相同,则可能需要创建一个公共私有方法,并从openFile:withApplication:open:调用该方法。

答案 1 :(得分:1)

您必须将NSOpenPanel配置为接受目录:

[myOpenPanel setCanChooseDirectories:YES];