0

我有 NSButton 接受拖放以将拖动的项目添加到 NSMutableArray。如何从 NSButton 拖动以拖动 NSMutableArray 中的所有项目?

4

1 回答 1

2

一种方法是使用 NSView 方法 dragImage:at:offset:event:pasteboard:source:slideBack: 开始拖动。在您的自定义按钮类中,您将覆盖 mouseDown: 并调用该方法。我写了一个示例,其中拖动的图像是按钮的图像,而我拖动的数据只是字符串“ARRAY”。这应该是你从源端需要做的所有事情——当你把它放在你的目的地时,它可以测试是否被丢弃的是字符串“ARRAY”,然后对你创建的数组做任何你想做的事情用你的第一滴。我在我的按钮中使用了 NSMultipleDocuments 图像,当我拖出按钮时我让它消失了。

- (void)mouseDown:(NSEvent *)theEvent {
     NSImage *pic = self.image;
     NSSize dragOffset = NSMakeSize(0.0, 0.0);
     NSPasteboard *pboard = [NSPasteboard pasteboardWithName:NSDragPboard];
    [pboard declareTypes:[NSArray arrayWithObject:NSStringPboardType]  owner:self];
    [pboard writeObjects:[NSArray arrayWithObject:@"ARRAY"]];
    NSPoint btnMiddle = NSMakePoint(self.frame.size.width/2,self.frame.size.height/2);
    NSPoint picOrigin = NSMakePoint(btnMiddle.x - pic.size.width/2, btnMiddle.y + pic.size.height/2);
    self.image = nil;
    [self dragImage:pic at:picOrigin offset:dragOffset event:theEvent pasteboard:pboard source:self slideBack:YES];
}
于 2012-05-07T15:31:22.347 回答