NSView文件拖动区(复制到查找程序)

时间:2013-09-05 12:08:18

标签: objective-c cocoa drag nsview

我正在尝试创建一个拖动视图,您可以在该视图中拖动应用程序生成的文件。它是NSImageView的子类,到目前为止我编写了这个方法:

- (void)mouseDown:(NSEvent *)pTheEvent {
    NSPoint tvarMouseInWindow = [pTheEvent locationInWindow];
    NSPoint tvarMouseInView   = [self convertPoint:tvarMouseInWindow fromView:nil];

    NSSize zDragOffset = NSMakeSize(0, 0);
    NSPasteboard *zPasteBoard;

    zPasteBoard = [NSPasteboard pasteboardWithName:NSDragPboard];
    [zPasteBoard declareTypes:[NSArray arrayWithObject:NSTIFFPboardType] owner:self];
    [zPasteBoard setData:[[self image] TIFFRepresentation] forType:NSTIFFPboardType];

    [self dragImage:[self image] at:tvarMouseInView offset:zDragOffset event:pTheEvent pasteboard:zPasteBoard source:self slideBack:YES];

    return;
}

当我现在将包含的图像拖离imageView并尝试将其放入Finder窗口时,它只是向后滑动而不会复制。如何正确地使用NSView实现文件拖动(而不是放下!)区域?​​

1 个答案:

答案 0 :(得分:0)

我在经过一些试验和错误后找到了解决方案并查看了NSView提供的所有方法。这是正确的:

[self dragFile:myFile fromRect:[self bounds] slideBack:YES event:pTheEvent];

原因我必须创建一个“文件”而不是UIImage的实例。但我的应用程序生成文件,这就是我想要的!