2009-12-18 1 views
1

У меня есть WebView, где я загружаю содержимое веб-архива. В этом же представлении у меня есть IKImageView розетка. Перетаскивание изображения n с веб-представления на изображение не работает для меня.Изображение из WebView перетаскивается на IKImageView

Что странно, оно работает, когда я перетаскиваю фото, например. из iPhoto на одно изображение. Кроме того, я могу перетащить изображение с моего веб-представления на NSScrollView (который создает ссылку на изображение), и я могу перетащить одну и ту же фотографию на новое сообщение почты (созданное изображение, как ожидалось).

IKImageView поддерживает «Поддержка перетаскивания» в IB.

Что мне здесь не хватает?

+0

«Изображение перетащить п падение с веб-просмотра на взгляд изображения не работает для меня» Пожалуйста, быть более конкретным. Что происходит вместо этого? –

+0

Я могу перетащить изображение (которое превращается в миниатюру и затеняется), но наведение над IKImageView не переключает курсор на символ с зеленым знаком плюс, и отпустите кнопку мыши, заставляя мое перетаскиваемое изображение «вернуться» к веб-представлению (к месту оригинального изображения). –

ответ

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; 
} 
1

IKImageView, вероятно, ожидает картон NSFilenamesPboardType, как обрабатывается ручка веб-просмотра?