我制作了自定义拖动图像并正在使用它。
一个问题是当我拖动项目项目的原点时变成一个空白区域。
我想将原始图像(?)留在原点。
所以我的收藏视图看起来什么也没发生。(当然,鼠标指针下有自定义图像正在拖动。)
请给我一个提示。
谢谢你。
文字很难解释所以我画了一张XD
更新 我的解决方案
- 继承 NSCollectionView 进行覆盖
func beginDraggingSession(with items: [NSDraggingItem], event: NSEvent, source: NSDraggingSource) -> NSDraggingSession
- 获取选定的 indexex
- 在循环选定的索引时,制作 NSDraggingItem 并替换来自方法的 arg 的项目,即索引处的内容。此时,如果您制作图像并使用
setDraggingFrame
拖动设置它,则鼠标指针下的图像将成为您的图像(我没有测试其他方式)并且collectionView将与拖动前一样。
更新 2
我再次阅读代码,发现解决方案实际上很简单。(但我认为这不是可推荐的解决方案......)
override func beginDraggingSession(with items: [NSDraggingItem], event: NSEvent, source: NSDraggingSource) -> NSDraggingSession {
//...
// reload your table data again here
return super.beginDraggingSession(with: newItems, event: event, source: source)
}
并且您需要自己计算需要删除和消失的项目。