我正在开发一个适用于图片的小应用程序(它不是基于文档的应用程序)。 我希望能够通过将图像文件拖到应用程序图标来打开它们。 我看过这个非常明确的解释
Cocoa/Obj-C - Open file when dragging it to application icon
并添加了通过拖动到应用图标打开.png文件的功能。
我是否必须单独添加所需的所有文件类型,或者是否有指定所有图像类型的方法(例如NSImageView将接受的所有图像类型)?
答案 0 :(得分:1)
在您的应用程序的Info.plist中,您可以在public.image
中为文档类型指定Uniform Type Identifier LSItemContentTypes
,即使您的应用程序不是基于文档的:
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>LSItemContentTypes</key>
<array>
<string>public.image</string>
</array>
</dict>
</array>
或
如果您还要打开其他类型的文件,您可能需要检查删除的文件是否为图像:
- (BOOL)application:(NSApplication *)sender openFile:(NSString *)filename {
NSError *error;
NSString *fileUTI = [[NSWorkspace sharedWorkspace] typeOfFile:filename error:&error];
if (!fileUTI)
NSLog(@"Error when trying to detect the type of file %@: %@", filename, error);
else if (UTTypeConformsTo((__bridge CFStringRef)fileUTI, kUTTypeImage))
NSLog(@"%@ is an image", filename);
else
NSLog(@"%@ is not an image", filename);
return YES;
}