2013-05-30 27 views
0

I使用AES算法对图像进行加密。当我在IKImageBrowserView中使用这些图像时,它会正确显示图像,但我无法将图像拖放到粘贴板。 我已经设置图像表示对IKImageBrowserView图像对象这样拖放不在IKImageBrowserView中工作

- (NSString *) imageRepresentationType 
{ 
    return IKImageBrowserNSDataRepresentationType; 
} 
- (id) imageRepresentation 
{ 
    return [[NSData dataWithContentsOfFile:path]decryptWithString:PASS]; 
} 

但它的工作时,我给这样的

- (NSString *) imageRepresentationType 
{ 
    return IKImageBrowserPathRepresentationType; 
} 

- (id) imageRepresentation 
{ 
    return path; 
} 

上面的代码工作,因为当我从IKImageBrowserView拖动图像将返回 图像的路径。

现在我需要做的是将IKImageBrowserView中的加密图像拖放到Pasteboard。

回答

0

终于我明白了。

对于非文件路径来表示图像,我们需要实现 - imageBrowser:writeItemsAtIndexes:toPasteboard:

- (NSUInteger) imageBrowser:(IKImageBrowserView *) aBrowser writeItemsAtIndexes:(NSIndexSet *) itemIndexes toPasteboard: (NSPasteboard *)pasteboard 
{ 
     NSUinteger index; 

     //instantiate an array to store paths 
     filesArray = [NSMutableArray array]; 

     //for each index... 
for(index = [itemIndexes firstIndex]; index != NSNotFound; index = [itemIndexes indexGreaterThanIndex:index]){ 

       //...get the path you want to add to the pasteboard 
       id myDatasourceItem = [_myDatasourceArray objectAtIndex:index]; 
       NSString *path = [myDatasourceItem myLargeImageFilePath]; 

       //add it to your array 
       [filesArray addObject:path]; 
     } 

     //declare the pasteboard will contain paths 
[pasteboard declareTypes:[NSArray arrayWithObjects:NSFilenamesPboardType,nil] owner:self]; 

     //set the paths 
[pasteboard setPropertyList:filesArray forType:NSFilenamesPboardType]; 

     //return the number of items added to the pasteboard 
     return [filesArray count]; 
}