如何直接从Mac OS X应用程序中的NSOpenPanel访问媒体部分(照片和电影)?

时间:2013-04-04 15:15:51

标签: objective-c macos cocoa nsopenpanel iphoto

我已经提到了这个链接

iMedia

现在我正在使用NSOpenPanel打开iPhoto图库文件夹。

以下是允许打开的代码。

int i = 0;
NSOpenPanel* openDlg = [NSOpenPanel openPanel];
[openDlg setCanChooseFiles:YES];
[openDlg setAllowedFileTypes:[NSArray arrayWithObjects:@"public.image",@"public.video",nil]];
[openDlg setAllowsMultipleSelection:TRUE];
[openDlg setAllowsOtherFileTypes:NO];

if ( [openDlg runModal] == NSOKButton )
{
    NSArray *files = [openDlg URLs];
    for( i = 0; i < [files count]; i++ )
    {
        NSLog(@"File path: %@", [[files objectAtIndex:i] path]);
    }
}

此代码始终打开我的Finder库文件夹,因为我想直接打开Media Photo and Movies文件夹。

请给我任何解决方案。

我附上了一个屏幕截图。

enter image description here

谢谢&amp;的问候,

2 个答案:

答案 0 :(得分:2)

您可以考虑添加以下代码段:

    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSError *error = nil;
    NSURL *picturesURL = [fileManager URLForDirectory:NSPicturesDirectory inDomain:NSUserDomainMask appropriateForURL:NULL create:NO error:&error];
    NSURL *iPhotoURL = [picturesURL URLByAppendingPathComponent:@"iPhoto Library.photolibrary"];

    [openDlg setDirectoryURL:iPhotoURL];

    // Now run the dialog

如果用户将他的iPhoto图库移动到某个非标准位置,这将无济于事。

答案 1 :(得分:0)

Apple的私有API包含您想要访问的控件; 此控件是 ILMediaBrowserView ,并提供与NSOpenDialog 中相同的相同视图。如果您正在计划应用程序的AppStore版本,请不要使用它,但它可能很有用。集成到您的项目以获取该视图的框架是 / System / Library / PrivateFrameworks 中的 iLifeMediaBrowser.framework