【发布时间】:2010-12-06 01:28:28
【问题描述】:
我支持 IKImageBrowserView 上的拖放操作。在我的拖放目标委托中,我接受 NSFilenamesPboardType 丢弃。奇怪的是,我返回的文件路径字符串都以“/Users/...”而不是“file://localhost/...”开头,就像我在使用 NSOpenPanel 时得到的那样。当我将这些转换为 NSURL 以供 IKImageBrowserView 使用以显示图像时,它会感到困惑,因为它只理解以“file://localhost/...”开头的完整路径。我可以破解前缀,就像我在下面的 sn-p 中所做的那样,但我想知道是否有一种编程方式来获取完整路径?
if ([[pasteboard types] containsObject:NSFilenamesPboardType])
{
NSData* data = [pasteboard dataForType:NSFilenamesPboardType];
if (data)
{
NSString* errorDescription;
NSArray* filenames = [NSPropertyListSerialization
propertyListFromData:data
mutabilityOption:kCFPropertyListImmutable
format:nil
errorDescription:&errorDescription];
for (id filename in filenames)
{
NSURL* url = [NSURL URLWithString:[NSString stringWithFormat:@"file://localhost%@", filename]];
NSLog(@"Adding URL: %@", url);
【问题讨论】:
标签: objective-c cocoa drag-and-drop