uch*_*aka 5 drag-and-drop nstableview nstablecellview
当tableView是拖动源时,是否需要子类化NSTableView或NSTableCellView来创建自定义拖动图像?
如果没有,我错过的神奇方法是什么?我似乎找不到任何可靠的东西.
NSTableCellView子类可以(略微神秘地)覆盖:
@property(retain, readonly) NSArray *draggingImageComponents
(将合成的NSDraggingImageComponent实例数组(谁知道它们以何种方式合成...))
NSTableView本身就有
- (NSImage *)dragImageForRowsWithIndexes:(NSIndexSet *)dragRows tableColumns:(NSArray *)tableColumns event:(NSEvent *)dragEvent offset:(NSPointPointer)dragImageOffset
但这些确实是子类化选项.
有人知道另一种技术吗?(10.8+是目标)
在您的数据源中,您需要通过您的tableView:draggingSession:willBeginAtPoint:forRowIndexes:方法设置图像,如下所示
[session enumerateDraggingItemsWithOptions:NSDraggingItemEnumerationConcurrent
forView:tableView
classes:[NSArray arrayWithObject:[NSPasteboardItem class]]
searchOptions:nil
usingBlock:^(NSDraggingItem *draggingItem, NSInteger index, BOOL *stop)
{
[draggingItem setDraggingFrame:NSMakeRect(0, 0, myWidth, myHeight)
contents:myFunkyDragImage];
}];
Run Code Online (Sandbox Code Playgroud)