Если вы нацеливаетесь на Lion, вы можете подкласса IKImageBrowserView
и переопределить метод NSDraggingSource protocol. Чтобы предотвратить перетаскивание за пределы вашего приложения, просто верните 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;
}
}
Протокол 'NSDraggingDestination' - это именно то, что он говорит: это протокол для перетаскивания * адресата *. Внедрение или переопределение его в классе просмотра ничего не изменит о перетаскивании * from * it; когда пользователь делает это, представление является источником * drag *. –