既然 Finder 本身就是可可(假设该应用只能在雪豹中运行),是否可以在可可应用中嵌入 Finder 功能?
我的意思是将文件浏览器窗格作为应用程序的一部分,实际浏览文件系统本身(在另一个窗格中编辑),但不编写 Finder 的所有功能。谢谢!
Finder 本身只是一个应用程序。它既不是组件库也不是框架。虽然您不能在应用程序中“嵌入”Finder 功能,但您可以影响 Finder 功能并调用 Finder 功能。
首先,您可以将文件夹操作附加到文件夹。这些将在用户对文件夹的内容执行某些操作时触发 - 例如,他们将文件放入其中。您在 Finder 中进行了设置。如果您想要与 Finder 交互,您应该学习一点AppleScript 。
其次,由于 Finder 支持 AppleEvents,您可以使用 AppleScript 影响 Finder。查看My First AppleScript和My First AppleScript Part II以了解如何执行此操作。在AppleScript Overview: Scripting with AppleScript中有更深入的信息。这是更多 Finder 脚本。
第三,还支持开发方法让 Finder 使用 Automator (Mac OS X 10.5) 只需单击按钮即可为用户完成复杂的操作。您还可以在 Automator 中创建服务,从 Mac OS X 10.6(“Snow Leopard”)开始。查看Mac OS X 10.6中的 Automator 和 Finder 操作,了解后一种技术。
即使 Finder 窗口本身不是一个可嵌入的组件,如果您真的想提供笔、打印、删除、复制等文件/文件夹以及从文件夹导航到文件夹的功能,您可以在您的文件夹中开发一个简单的文件夹浏览器。应用。
只要您不将站点设置为模仿查找器或复制其所有功能,这应该不是大量的工作,只是我提到的基本基础知识。
但是,您需要知道如何对 Macintosh 进行编程 - 而不仅仅是使用 AppleScript。通常的方法是学习 Objective-C 编程语言和 Cocoa 框架。您需要熟悉使用模型-视图-控制器架构编写应用程序。
您将创建一个名为 MyFile 的 NSObject 的子类,以及一个名为 MyFolder 的集合类的子类。当应用程序创建浏览窗口时,每次应用程序激活(成为最前面的应用程序)时,you8 都会刷新浏览菜单的内容。
您可以在菜单栏中放置一个菜单,其中包含以下命令:打开、打印、删除、复制。当用户执行这些命令之一时,您的应用程序会自行执行适当的操作或将请求发送到 Finder。操作完全执行后,如果用户导航到不同的文件夹,则刷新当前显示的文件夹或新显示的文件夹的浏览窗口。
如果您熟悉设计模式、面向对象编程和一般框架 - 阅读Cocoa 设计模式将极大地加快您的学习曲线。
这些是您可以用来利用 Finder 的一些功能的各种技术。当您查看这些内容时,我建议您非常清楚这会给您的应用程序用户带来什么好处。写下此功能的总体目标是什么,以及您希望支持哪些命令,这将使您更容易选择开发它的路径。
由于 Finder 始终在运行,因此用户始终可以通过单击按钮来单击 Finder 文件夹窗口。因此,请避免为了自身的利益而简单地复制该功能。专注于您为用户提供的好处。确保您确实处理了用户从另一个应用程序更新您正在显示其内容的文件夹然后切换回您的应用程序的情况。
不,他们并没有让 Finder 成为一个框架的宿主,比如 Preview。你仍然必须自己写这个。