在我的macOS项目上,我有一个带有单个列的NSTableView,其行可以通过拖放来重新排序。
当元素太多并且启用了滚动时,当您接近底部或顶部时,拖放操作可使表格滚动。此行为是开箱即用的,我不必启用或配置它。
问题是,当我开始拖动一个元素并将鼠标上下移动几个像素时,滚动运动确实太快了。桌子立即到达顶部或底部,而不会减速。真令人沮丧。
我不知道要在何处进行干预或要覆盖哪些内容以自定义此行为。我在文档中没有看到与我可以更改的这种“自动”滚动相关的任何内容。在这一点上我真的很笨。
向我建议的一种解决方法是在sleep()
调用中添加:
func tableView(_ tableView: NSTableView, validateDrop info: NSDraggingInfo, proposedRow row: Int, proposedDropOperation dropOperation: NSTableView.DropOperation) -> NSDragOperation
但是滚动变得有点混乱,我很想了解正确的滚动方式。
预先感谢您对相关文档的任何提示或指针。
事实证明,自动滚动速度和热点区域由拖放机制控制,无法明确覆盖(至少我找不到方法)。
BUT这个答案挽救了我的一天:NSTableView in NSScrollView doesn't autoscroll when dragging
TL; DR自动滚动热点区域和滚动速度取决于Interface Builder中设置的NSTableCellView大小。较大的尺寸可以使较大的热点区域和更快的滚动速度。