0

ドラッグされたアイテムをNSMutableArrayに追加するためにドロップを受け入れるNSButtonがあります。NSButton からドラッグして、NSMutableArray のすべてのアイテムをドラッグするにはどうすればよいですか?

4

1 に答える 1

2

これを行う 1 つの方法は、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 に答える