Bild von WebView geschleppt auf IKImageView
-
20-09-2019 - |
Frage
Ich habe WebView , wo ich Inhalte von webarchive laden. In der gleichen Ansicht habe ich IKImageView Ausgang. Bild per Drag n Drop aus Web-Ansicht auf Bildansicht nicht funktioniert für mich.
Was seltsam ist, funktioniert es, wenn ich Fotos ziehen z.B. aus iPhoto auf die gleiche Bildansicht. Ich kann auch, ziehe Bild von meiner Web-Ansicht auf NSScrollView (die einen Link zu dem Bild erzeugt), und ich kann das gleiche Foto auf eine neue Mail-Nachricht ziehen (ein Bild erzeugt, wie erwartet).
IKImageView hat "unterstützt Drag & Drop" in der IB aktiviert.
Was ich hier fehlt?
Lösung 2
Es stellte sich heraus, dass der beste Weg d'zum Griff in meinem Fall N'D über WebArchivePboardType
ist.
Dann gilt:
- (BOOL)performDragOperation:(id <NSDraggingInfo>)sender
{
NSPasteboard *pboard;
NSDragOperation sourceDragMask;
sourceDragMask = [sender draggingSourceOperationMask];
pboard = [sender draggingPasteboard];
// Create image data from webarchive stored in a pasteboard.
NSData *image = [pboard dataForType:WebArchivePboardType];
WebArchive *webArchive = [[WebArchive alloc] initWithData:image];
// Let's see what are we dragging.
for (WebResource *subresource in [webArchive subresources])
{
NSString *mimeType = [subresource MIMEType];
if ([mimeType hasPrefix:expectedMimeTypeStartsWith])
{
NSData *data = [subresource data];
CFDataRef imgData = (CFDataRef)data;
CGDataProviderRef imgDataProvider = CGDataProviderCreateWithCFData (imgData);
CGImageRef image;
if ([mimeType hasSuffix:@"png"])
{
image = CGImageCreateWithPNGDataProvider(imgDataProvider, NULL, true, kCGRenderingIntentDefault);
}
else if ([mimeType hasSuffix:@"jpeg"])
{
image = CGImageCreateWithJPEGDataProvider(imgDataProvider, NULL, true, kCGRenderingIntentDefault);
}
[self setImage:image imageProperties:nil];
}
}
return YES;
}
Andere Tipps
IKImageView
ist wahrscheinlich eine Montagefläche von NSFilenamesPboardType
erwartet, wie funktioniert die Webansicht Griff zieht Bilder?