[NSTableView拖动元素进行重新排序时滚动速度过快

问题描述 投票:0回答:1

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

当元素太多并且启用了滚动时,当您接近底部或顶部时,拖放操作可使表格滚动。此行为是开箱即用的,我不必启用或配置它。

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

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

向我建议的一种解决方法是在sleep()调用中添加:

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

但是滚动变得有点混乱,我很想了解正确的滚动方式。

预先感谢您对相关文档的任何提示或指针。

swift macos cocoa drag-and-drop nstableview
1个回答
0
投票

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

BUT这个答案挽救了我的一天:NSTableView in NSScrollView doesn't autoscroll when dragging

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

© www.soinside.com 2019 - 2024. All rights reserved.