NSTableView 在拖动元素进行重新排序时滚动太快



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

当元素过多且启用了滚动时,当您接近底部或顶部时,拖放可以使表格滚动。此行为是现成的,我不必启用或配置它。

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

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

向我建议的一个可行的解决方法是添加一个sleep()调用:

func tableView(_ tableView: NSTableView, validateDrop info: NSDraggingInfo, proposedRow row: Int, proposedDropOperation dropOperation: NSTableView.DropOperation) -> NSDragOperation

但是滚动变得有点断断续续,我很好奇了解正确的方法。

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

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

但是这个答案拯救了我的一天: NSScrollView 中的 NSTableView 在拖动时不会自动滚动

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

最新更新