NSOutlineView spring 加载扩展项

NSOutlineView spring load expanded item

我有一个 NSOutlineView 的子类实现了 NSSpringLoadingDestination 协议。

一切正常。唯一的问题是当我尝试将一个项目拖到一个已经展开的项目上时,spring 加载永远不会激活。

NSOutlineViewDelegateProtocol 方法 outlineView(_:shouldExpandItem:) returns true.

方法 outlineView(_:validateDrop:proposedItem:proposedChildIndex:) returns 一个有效的 NSDragOperation。当我拖过展开的项目时,它会突出显示。

和 NSSpringLoadingDestination 方法 springLoadingUpdated(_:) returns .enabled

但是 springLoadingActivated(_:draggingInfo:) 从未被调用。

奇怪的是,如果我在 springLoadingUpdated(:) 中做了一些事情,比如 test isItemExpanded(:) 并立即关闭它,spring loading 激活为预期的。但这不是解决方案。

如有任何见解,我们将不胜感激。

提前致谢。

通过将 NSOutlineView 函数 isExpandable 重写为 [=20],我能够得到一个 NSOutlineView,即 NSSpringLoadingDestination 以正确调用 springLoadingActivated(_:draggingInfo:) =] 是的。

override func isExpandable(_ item: Any?) -> Bool { return true }