我想在双击文件时用我的应用程序打开一个文件。我已经使用应用程序注册了文件类型,如果我将文件拖放到应用程序图标上,application: openFile:
方法可以正常工作。在苹果文档中,它说,当用户双击文件时,此方法也应该有效。
我所看到的是,通过双击打开文件时应用程序将激活,但Safari将打开该文件(尝试打开.webloc文件)。但方法application: openFile:
没有被调用:(
以下是我在xcode中设置的方法:
修改
我已将.webloc设置为我的应用程序的标准。右键单击“打开方式”> “我的应用程序”不起作用。
编辑2: 如果我将文件扩展名重命名为.mp3或任何其他文件扩展名,我的应用程序将通过双击它来打开文件!奇怪...
答案 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])]; }
然后您将有一个工作示例来与您的项目进行比较。