1

WebアーカイブのコンテンツをロードするWebViewがあります。同じビューに、IKImageViewアウトレットがあります。Webビューから画像ビューへの画像のドラッグアンドドロップは機能しません。

奇妙なことに、たとえばiPhotoから同じ画像ビューに写真をドラッグすると機能します。また、画像をWebビューからNSScrollView(画像へのリンクを作成)にドラッグしたり、同じ写真を新しいメールメッセージ(期待どおりに画像を作成)にドラッグしたりできます。

IKImageViewでは、IBで「ドラッグアンドドロップのサポート」が有効になっています。

ここで何が欠けていますか?

4

2 に答える 2

1

IKImageViewおそらくの厚紙を期待していNSFilenamesPboardTypeますが、Webビューは画像のドラッグをどのように処理しますか?

于 2009-12-18T20:08:27.543 に答える
0

私の場合、d'n'dを処理する最良の方法は、を介することであることが判明しましたWebArchivePboardType。それで:

- (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;
}
于 2010-01-16T13:12:55.350 に答える