我用AES算法加密了图像。当我在IKImageBrowserView中使用这些图像时,它可以正确地显示图像,但我无法将图像拖放到粘贴板上。我将图像表示设置为IKImageBrowserView图像对象,如下所示
- (NSString *) imageRepresentationType
{
return IKImageBrowserNSDataRepresentationType;
}
- (id) imageRepresentation
{
return [[NSData dataWithContentsOfFile:path]decryptWithString:PASS];
}但是当我像这样给予的时候,它就起作用了
- (NSString *) imageRepresentationType
{
return IKImageBrowserPathRepresentationType;
}
- (id) imageRepresentation
{
return path;
}上面的代码是有效的,因为当我从IKImageBrowserView拖动图像时,它将返回图像的路径。
现在我需要做的是将IKImageBrowserView中的加密图像拖放到粘贴板中。
发布于 2013-06-03 18:14:09
我终于明白了。
对于非文件路径表示的图像,我们需要实现-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];
}https://stackoverflow.com/questions/16835648
复制相似问题