Löschen Drag and Drop Verhalten von IKImageBrowserView
-
27-09-2019 - |
Frage
In der Standardeinstellung (wie es scheint), ermöglicht IKImageBrowserView per Drag & Drop auf Standorte im Finder. Ich möchte dieses Verhalten deaktivieren, aber ich bin nicht sicher, wie dies zu tun. Ich dachte, dass vielleicht das NSDraggingDestination Protokoll implementiert und überschreibt sie dieses Problem lösen könnte, aber bisher hat es nicht für mich gearbeitet.
Vielen Dank für jede Hilfe!
Lösung
Wenn Sie IKImageBrowserView Drag-and-Drop Verhalten anzupassen, können Sie die - (NSUInteger) imageBrowser:(IKImageBrowserView *) aBrowser writeItemsAtIndexes:(NSIndexSet *) itemIndexes toPasteboard:(NSPasteboard *)pasteboard
Methode in Ihrem Browser Datenquellenobjekt implementieren. Das lässt Sie definieren, welche Arten und Daten, die Sie auf der Montagefläche setzen wollen, wenn eine Drag tun. Wenn Sie möchten, zu deaktivieren vollständig ziehen, sollten Sie in der Lage sein, nur 0 zurück (die Anzahl der Artikel, die Sie gezogen werden sollen).
Andere Tipps
Wenn Sie Lion sind Targeting können Sie IKImageBrowserView
Unterklasse und die draggingSession:sourceOperationMaskForDraggingContext:
außer Kraft setzen Methode NSDraggingSource Protokoll. Um schleppt außerhalb Ihrer Anwendung zu verhindern nur zurückgeben NSDragOperationNone
wenn der Kontext NSDraggingContextOutsideApplication
ist. Ansonsten geben die Ziehoperationen, die Sie interessiert sind. Auf diese Weise können schleppt auf dem Desktop nicht zulassen kann, Finder, etc., aber immer noch erlauben, schleppt in Ihrem Bild-Browser-Ansicht der Anwendung.
- (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;
}
}