Exclua o comportamento de arrastar e soltar de ikimagebrowserview
-
27-09-2019 - |
Pergunta
Por padrão (ao que parece), o iKIMAGEBROWSERVIEW permite arrastar e soltar para locais no Finder. Eu gostaria de desligar esse comportamento, mas não tenho certeza de como fazê -lo. Eu estava pensando que talvez implementar o protocolo NSDraggingDestination e substituí -lo poderia resolver isso, mas até agora não funcionou para mim.
Obrigado por qualquer ajuda!
Solução
Se você deseja personalizar o comportamento de arrastar e soltar do ikimageBrowSerview, você pode implementar o - (NSUInteger) imageBrowser:(IKImageBrowserView *) aBrowser writeItemsAtIndexes:(NSIndexSet *) itemIndexes toPasteboard:(NSPasteboard *)pasteboard
Método no objeto de fonte de dados do seu navegador. Isso permitirá que você defina quais tipos e dados você deseja colocar no Pasteboard ao fazer um arrasto. Se você deseja desativar completamente o arrasto, poderá retornar 0 (o número de itens que deseja ser arrastado).
Outras dicas
Se você está segmentando leão, você pode subclasse IKImageBrowserView
e substituir o draggingSession:sourceOperationMaskForDraggingContext:
Protocolo NSDraggingsource método. Para evitar arrastos para fora do seu aplicativo, basta retornar NSDragOperationNone
Se o contexto for NSDraggingContextOutsideApplication
. Caso contrário, retorne as operações de arrasto em que você está interessado. Dessa forma, você pode não permitir arrastar para o desktop, localizador etc., mas ainda assim permitir arrastar na visualização do navegador de imagem do seu aplicativo.
- (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;
}
}