2009-12-18 2 views
1

WebView 여기에서 webarchive의 콘텐츠를로드합니다. 같은 시야에 내가 가지고 IKImageView 콘센트. 웹보기에서 이미지보기로 이미지 끌어서 놓기가 작동하지 않습니다.WebView에서 가져온 이미지가 IKImageView로 드래그되었습니다.

이상한 무엇입니까, 사진을 드래그하면 작동합니다. iPhoto에서 동일한 이미지보기로 또한 내 웹보기에서 이미지를 NSScrollView (이미지 링크를 만듭니다)으로 드래그하여 같은 사진을 새 메일 메시지 (예상대로 이미지 생성)로 끌 수 있습니다.

IKImageView에는 IB에서 "드래그 앤 드롭 지원"기능이 있습니다.

무엇이 여기에 있습니까?

+0

. "이미지보기 위에 웹보기에서 이미지 드래그 N 드롭 나를 위해 작동하지 않습니다"더 구체적으로하시기 바랍니다. 대신 무엇이 발생합니까? –

+0

IKImageView 위로 마우스를 가져 가면 커서가 녹색 더하기 기호로 바뀌지 않고 마우스 단추를 놓으면 드래그 한 이미지가 웹보기로 "돌아갑니다"라는 메시지가 표시됩니다 (축소판으로 바뀌고 그림자가 있음). 원본 이미지 위치로). –

답변

0

제 경우를 다루는 가장 좋은 방법은 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; 
} 
1

IKImageView은 아마도 NSFilenamesPboardType의 페이스트 보드를 예상합니다. 웹 뷰는 이미지 드래그를 어떻게 처리합니까?