NSTableView拖动冻结了停靠

时间:2019-03-20 11:54:28

标签: drag-and-drop nstableview appkit

当我将NSTableView(基于视图)项拖到扩展坞上时,扩展坞冻结。即进入Dock区域时会产生精灵效果,但是卡住了。

我已经实现:

func tableView(_ tv: NSTableView, pasteboardWriterForRow row: Int)
     -> NSPasteboardWriting?

为了使行可拖动,它返回一个实现NSPasteboardWriting的NSObject,实际上没有什么特别的(声明一个字符串和一个自定义类型)。

D&D在该应用程序中也可以正常工作。当它开始失效时,它仅用于外部阻力。

问:知道我做错了什么吗? :-)

示例代码:https://gist.github.com/helje5/48728983951ab3362af43b967c554475

P.S .:我也有一个自定义视图,实现了NSDraggingSource本身,这似乎很好用。

Demo GIF

1 个答案:

答案 0 :(得分:1)

将无法拖放到应用程序外部的项目拖到Dock上时,Dock的动画将冻结。致电

func setDraggingSourceOperationMask(_ mask: NSDragOperation, forLocal isLocal: Bool)

带有forLocal的是false,以使该项目可投放到应用程序外部。