Удалить поведение перетаскивания IkimageBrowsiview
-
27-09-2019 - |
Вопрос
По умолчанию (похоже), ikimageBrowsiview позволяет перетаскивать в местах в поисках. Я хотел бы отключить это поведение, но не уверен, как это сделать. Я думал, что, возможно, внедряя протокол NSdraggingdence и переоценить его, но до сих пор это не сработало для меня.
Спасибо за любую помощь!
Решение
Если вы хотите настроить поведение перетаскивания IkimageBrowsiview, вы можете реализовать - (NSUInteger) imageBrowser:(IKImageBrowserView *) aBrowser writeItemsAtIndexes:(NSIndexSet *) itemIndexes toPasteboard:(NSPasteboard *)pasteboard
Метод в исходном источнике данных вашего браузера. Это позволит вам определить, какие типы и данные, которые вы хотите поставить на картонную панель при выполнении перетаскивания. Если вы хотите отключить перетаскивание полностью, вы должны просто вернуться 0 (количество элементов, которые вы хотите перетащить).
Другие советы
Если вы ориентируетесь на льви, вы можете подкласс IKImageBrowserView
и переопределить draggingSession:sourceOperationMaskForDraggingContext:
Nsdraggingsource протокол метод. Чтобы предотвратить перетаскивание вне вашего приложения, просто верните 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;
}
}