質問

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

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

役に立ちましたか?

解決

あなたはIKImageBrowserViewのドラッグ&ドロップ動作をカスタマイズしたい場合は、

は、ブラウザのデータ・ソース・オブジェクト内の- (NSUInteger) imageBrowser:(IKImageBrowserView *) aBrowser writeItemsAtIndexes:(NSIndexSet *) itemIndexes toPasteboard:(NSPasteboard *)pasteboardメソッドを実装することができます。それはあなたがドラッグをやったときにペーストボードの上に載せていきたいと思いますどのような種類のデータ定義できます。あなたは完全に無効にドラッグしたい場合は、単に0(あなたがドラッグしたいアイテムの数)。

を返すことができるはずです

他のヒント

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

- (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;
    }
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top