2015-07-15 3 views
0

У меня есть NSTableView, управляемый NSViewController. Они находятся в NSWindow, связанных с NSWindowController и связанных с NSDocument. Он без проблем выполняет NSDragOperationCopy. Я добавил методdraggingSession: sourceOperationMaskForDraggingContext: Not Called

draggingSession:session sourceOperationMaskForDraggingContext:

для того, чтобы начать контролировать движение против копирования против операции удаления следующим образом:

-(NSDragOperation)draggingSession:(NSDraggingSession *)session sourceOperationMaskForDraggingContext:(NSDraggingContext)context 
{ 
switch(context) { 
    case NSDraggingContextOutsideApplication: 
     return NSDragOperationCopy | NSDragOperationDelete; 
     break;  
    case NSDraggingContextWithinApplication:  
    default: 
     return NSDragOperationMove; 
     break; 
} 
} 

Но он никогда не вызывается, а когда

- (NSDragOperation)tableView:(NSTableView*)tv 
      validateDrop:(id)info 
      proposedRow:(NSInteger)row 
    proposedDropOperation:(NSTableViewDropOperation)op 
{ 
    return NSDragOperationMove ; 
} 

- (BOOL)tableView:(NSTableView*)tv acceptDrop:(id)info row:(NSInteger)row dropOperation:(NSTableViewDropOperation)op

вызываются, po inf O выходы:

SDraggingInfo: draggingSequenceNumber = 0x74000000 draggingDestinationWindow = draggingSourceOperationMask = 0x11 draggingLocation = {+96,49609375, +192,7421875} draggingPasteboard =

draggingSourceOperationMask = 0x11 указывает, как копирование и движение разрешено.

Я не могу контролировать, какие операции разрешены.

Почему не перетаскивание?

Большое спасибо

EDIT:

ли NSTableView установить себя или источник данных в качестве draggingSource при вызове:

dragImage:at:offset:event:pasteboard:source:slideBack

ответ

0

NSTableView устанавливает себя в качестве draggingSource что означает NSTableView dataSource никогда не видит вызов dragImage ... Я установил это, поместив в NSTableView метод dummy dragImage ....