8

したがって、オブジェクトを1つのソースから複数の潜在的な宛先にドラッグしたいと思います。オブジェクトが各宛先の上にあるとき、私はそれを別の画像に「モーフィング」したいと思います。NSDragSourceの観点からこれを行う簡単な方法はありますか?

4

4 に答える 4

19

これを行うenumerateDraggingItemsWithOptions:NSDraggingInfoは、ドラッグ先のハンドラーメソッドのメソッド(つまり、NSDraggingDestinationプロトコルの実装)を使用します。

例えば:

- (NSDragOperation)draggingUpdated:(id < NSDraggingInfo >)sender
{
    NSImage* newDragImage = <take it from wherever>;
    [sender enumerateDraggingItemsWithOptions:0
                                      forView:sender.draggingSource
                                      classes:[NSArray arrayWithObject:[NSPasteboardItem class]]
                                searchOptions:nil
                                   usingBlock:^(NSDraggingItem *draggingItem, NSInteger idx, BOOL *stop) {
                                       NSRect theFrame = draggingItem.draggingFrame;
                                       theFrame.size = newDragImage.size;
                                       [draggingItem setDraggingFrame:theFrame contents:newDragImage];
                                       *stop = NO;
                                   }];
}
于 2013-06-13T08:53:55.253 に答える
5

Joshua Nozziは、これを行うための優れた方法を投稿しています:http: //joshua.nozzi.name/2009/10/jlndrageffectmanager/

于 2009-11-27T22:05:40.160 に答える
4

NSDraggingInfoのenumerateDraggingItemsWithOptionsメソッドを確認してください。

于 2012-08-28T23:11:31.617 に答える
3

ドラッグソースAPIだけを使用してこれを行う方法はありません。

Interface Builderを見ると、それはあなたが望むものと似たようなことをします。ライブラリからボタンをドラッグすると、ドラッグの途中でボタンがアニメーション化されます。

ほとんどの人によると、Appleがこれを行っている方法は、ドラッグ画像を小さな透明な画像にすることです。次に、ウィンドウを作成し、マウスに追従させます。その後、ウィンドウを使用して、任意のタイプのアニメーションを実行できます。

于 2009-10-10T05:58:32.430 に答える