4

デフォルトでは (どうやら)、IKImageBrowserView は Finder 内の場所へのドラッグ アンド ドロップを有効にします。この動作をオフにしたいのですが、その方法がわかりません。おそらく NSDraggingDestination プロトコルを実装してオーバーライドすることでこれを解決できると考えていましたが、これまでのところうまくいきませんでした。

助けてくれてありがとう!

4

2 に答える 2

6

IKImageBrowserView のドラッグ アンド ドロップ動作をカスタマイズする場合- (NSUInteger) imageBrowser:(IKImageBrowserView *) aBrowser writeItemsAtIndexes:(NSIndexSet *) itemIndexes toPasteboard:(NSPasteboard *)pasteboardは、ブラウザのデータ ソース オブジェクトにメソッドを実装できます。これにより、ドラッグ時にペーストボードに配置するタイプとデータを定義できます。ドラッグを完​​全に無効にしたい場合は、0 (ドラッグしたいアイテムの数) を返すだけでよいはずです。

于 2010-06-13T20:18:53.060 に答える
1

Lion をターゲットにしている場合は、 NSDraggingSource プロトコルIKImageBrowserViewメソッドをサブクラス化してオーバーライドできます。アプリケーション外へのドラッグを防ぐには、コンテキストが. それ以外の場合は、関心のあるドラッグ操作を返します。このようにして、デスクトップや Finder などへのドラッグを禁止できますが、アプリケーションの画像ブラウザー ビュー内でのドラッグは引き続き許可されます。draggingSession:sourceOperationMaskForDraggingContext: NSDragOperationNoneNSDraggingContextOutsideApplication

- (NSDragOperation)draggingSession:(NSDraggingSession *)session sourceOperationMaskForDraggingContext:(NSDraggingContext)context {
    [super draggingSession:session sourceOperationMaskForDraggingContext:context];

    switch (context) {
        case NSDraggingContextOutsideApplication:
            return NSDragOperationNone;
            break;

        case NSDraggingContextWithinApplication:
            return NSDragOperationAll;
            break;

        default:
            return NSDragOperationAll;
            break;
    }
}
于 2011-12-16T18:35:15.350 に答える