在objective-c中双击打开文件

时间:2012-04-16 18:25:14

标签: objective-c macos

我想在双击文件时用我的应用程序打开一个文件。我已经使用应用程序注册了文件类型,如果我将文件拖放到应用程序图标上,application: openFile:方法可以正常工作。在苹果文档中,它说,当用户双击文件时,此方法也应该有效。

我所看到的是,通过双击打开文件时应用程序将激活,但Safari将打开该文件(尝试打开.webloc文件)。但方法application: openFile:没有被调用:(

以下是我在xcode中设置的方法: file type reg

修改

我已将.webloc设置为我的应用程序的标准。右键单击“打开方式”> “我的应用程序”不起作用。

编辑2: 如果我将文件扩展名重命名为.mp3或任何其他文件扩展名,我的应用程序将通过双击它来打开文件!奇怪...

4 个答案:

答案 0 :(得分:1)

双击某个文件并不会在每个可以处理文件类型的应用程序中打开(你能想象当你双击JPEG时会发生什么吗?) - 双击使用默认应用程序文件类型。在这种情况下,Safari是webloc文件的默认阅读器。您需要将其更改为您的应用程序(您可以从“获取信息”窗口执行此操作),如果您希望它是被调用的那个。

答案 1 :(得分:1)

由于我自己也遇到了类似的问题,我将添加对我有用的内容。我发现.webloc文件永远不会调用-application:openFile:,而是你必须做几件事情才能让你的应用程序成为URL的默认角色处理程序,如果你只想双击.webloc并让你的应用程序处理它

这篇文章中选择的答案描述了解决我问题的过程: How do you set your Cocoa application as the default web browser?

答案 2 :(得分:0)

可能有几个应用程序都知道如何打开相同类型的文件。如果您希望您的应用程序处理.webloc个文件,请获取该类型文件的“获取信息”。然后在"打开方式:"的弹出菜单中选择您的应用程序。信息窗口的一部分。如果您想将您的应用程序用于所有此类文件,请单击"全部更改..."按钮。

答案 3 :(得分:0)

在Xcode中,使用“Mac OS X :: Cocoa Application”模板创建一个新项目。然后实现

- (NSData *)dataOfType:(NSString *)typeName error:(NSError **)outError
{ static NSString *content = @"Empty File";
   return [NSData dataWithBytes: [content UTF8String] 
                         length: 1 + strlen ([content UTF8String])]; }

然后您将有一个工作示例来与您的项目进行比较。