如何自定义NSTableView的拖动session
how to customize the dragging session of NSTableView
我自定义了一个NSTableView
,并自定义了基于红色背景色和图像的视图的cellview。
例如:
table实现方法:
-(void)tableView:(NSTableView *)tableView draggingSession: (NSDraggingSession *)session willBeginAtPoint:(NSPoint)screenPoint forRowIndexes:(NSIndexSet *)rowIndexes
我想自定义拖动项只有图片没有背景颜色。
所以我写了这样的代码:
[session enumerateDraggingItemsWithOptions:NSDraggingItemEnumerationConcurrent
forView:tableView
classes:[NSArray arrayWithObject:[NSPasteboardItem class]]
searchOptions:nil
usingBlock:^(NSDraggingItem *draggingItem, NSInteger index, BOOL *stop) {
[draggingItem setDraggingFrame:NSMakeRect(0, 0, StickerTableViewWidth, StickerTableViewHeight)
contents:[NSImage imageNamed:imageName]];
}];
但实际上它并没有进入区块。
有人知道为什么吗?
我画红色底色的原因是
设计师要求我在单元格视图上绘制一个掩码视图以指示选定状态。
但是tableView也实现了拖动源,所以当我拖动cell的时候,mask view也被拖出来了。
然后我搜索了一下,发现我们可以使用 table 行视图来绘制选定状态。这样问题就解决了。
但是我仍然不知道为什么这个块没有被执行。
所以如果有人知道请post回答,非常感谢。
我自定义了一个NSTableView
,并自定义了基于红色背景色和图像的视图的cellview。
例如:
table实现方法:
-(void)tableView:(NSTableView *)tableView draggingSession: (NSDraggingSession *)session willBeginAtPoint:(NSPoint)screenPoint forRowIndexes:(NSIndexSet *)rowIndexes
我想自定义拖动项只有图片没有背景颜色。 所以我写了这样的代码:
[session enumerateDraggingItemsWithOptions:NSDraggingItemEnumerationConcurrent
forView:tableView
classes:[NSArray arrayWithObject:[NSPasteboardItem class]]
searchOptions:nil
usingBlock:^(NSDraggingItem *draggingItem, NSInteger index, BOOL *stop) {
[draggingItem setDraggingFrame:NSMakeRect(0, 0, StickerTableViewWidth, StickerTableViewHeight)
contents:[NSImage imageNamed:imageName]];
}];
但实际上它并没有进入区块。
有人知道为什么吗?
我画红色底色的原因是 设计师要求我在单元格视图上绘制一个掩码视图以指示选定状态。 但是tableView也实现了拖动源,所以当我拖动cell的时候,mask view也被拖出来了。
然后我搜索了一下,发现我们可以使用 table 行视图来绘制选定状态。这样问题就解决了。
但是我仍然不知道为什么这个块没有被执行。 所以如果有人知道请post回答,非常感谢。