【问题标题】:NSTableView scrolls too fast when dragging element for reorder拖动元素进行重新排序时,NSTableView 滚动太快
【发布时间】:2020-02-11 16:12:52
【问题描述】:

在我的 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】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-08
      • 1970-01-01
      • 2013-08-25
      • 2012-03-31
      • 2011-01-12
      • 1970-01-01
      • 2013-01-07
      • 1970-01-01
      相关资源
      最近更新 更多