Swift 拖动元素进行重新排序时,NSTableView滚动过快

Swift 拖动元素进行重新排序时,NSTableView滚动过快,swift,macos,cocoa,drag-and-drop,nstableview,Swift,Macos,Cocoa,Drag And Drop,Nstableview,在我的macOS项目中,我有一个NSTableView,其中只有一列,可以通过拖放对其行重新排序 当元素过多且已启用滚动时,当您接近底部或顶部时,拖放可使表格滚动。这种行为是开箱即用的,我不必启用或配置它 问题是,当我开始拖动一个元素并将鼠标上下移动几个像素时,滚动运动实在太快了。桌子立即到达顶部或底部,不可能减速。这真令人沮丧 我不知道在哪里进行干预或覆盖什么来定制此行为。我在文档中没有看到任何与这种“自动”滚动相关的我可以更改的内容。在这一点上我真的很无知 我建议的一个解决办法是添加slee

在我的macOS项目中,我有一个NSTableView,其中只有一列,可以通过拖放对其行重新排序

当元素过多且已启用滚动时,当您接近底部或顶部时,拖放可使表格滚动。这种行为是开箱即用的,我不必启用或配置它

问题是,当我开始拖动一个元素并将鼠标上下移动几个像素时,滚动运动实在太快了。桌子立即到达顶部或底部,不可能减速。这真令人沮丧

我不知道在哪里进行干预或覆盖什么来定制此行为。我在文档中没有看到任何与这种“自动”滚动相关的我可以更改的内容。在这一点上我真的很无知

我建议的一个解决办法是添加
sleep()
调用:

func tableView(_ tableView: NSTableView, validateDrop info: NSDraggingInfo, proposedRow row: Int, proposedDropOperation dropOperation: NSTableView.DropOperation) -> NSDragOperation
但滚动变得有点起伏,我很好奇如何正确地进行


提前感谢您提供相关文档的任何提示或指针。

事实证明,自动滚动速度和热点区域由拖放机制控制,无法明确覆盖(至少我找不到方法)

但是这个答案救了我一天:

TL;DR自动滚动热点区域和滚动速度取决于Interface Builder中设置的NSTableCellView大小。尺寸越大,热点区域越大,滚动速度越快