NSScrollView 中的 NSTableView 在拖动时不会自动滚动
NSTableView in NSScrollView doesn't autoscroll when dragging
我目前正在 OS X 应用程序的 table 视图中实施拖放重新排列。虽然正常滚动工作正常,但在拖动时自动滚动完全坏了。
如果我抓住一个单元格并开始拖动,自动滚动只会告诉 table 滚动到顶部。如果我在拖动过程中使用触控板手动滚动,table 会不断弹出到顶部。如果我拖动其中一个顶部单元格,table 在靠近底部拖动时不会自动向下滚动。
我继承了 NSScrollView 并覆盖了 scrollClipView
方法。我看到它被一些内部自动滚动方法调用,坐标为 (0, 0)。
因为我看不到那个内部方法在做什么,而且 Goggle 和 SO 什么也没有出现,所以我有点卡住了。
有没有人运行以前处理过这个问题?根据过去的经验,我觉得它与 AutoLayout 相关,但我不知道是什么。或者可能是完全不相关的东西。
关于如何进一步排除故障的任何想法?
我运行进入同样的问题。在我的例子中,问题是我在 Interface Builder 中将 NSTableCellView
的高度设置为 10,000,这样水平分隔符就不会在实际行下方的空行中显示。
然而,我的NSTableCellViews
在运行时加载的实际高度是43px。
因此,当我开始拖动单元格对其重新排序时,NSScrollView
试图一次滚动 10,000 个像素,而不是一次滚动 43 个。
这似乎是一个错误,因为我的 NSOutlineView
子类确实实现了以下方法来动态设置每行的高度。
func outlineView(_ outlineView: NSOutlineView, heightOfRowByItem item: Any) -> CGFloat
显然在拖放操作期间自动滚动机制忽略了该方法,并且仅使用在 Interface Builder 中设置的值。
所以我只是在 Interface Builder 中将虚拟 NSTableCellView
的高度更改为 43px,我将接受为空行显示的水平分隔符。
我目前正在 OS X 应用程序的 table 视图中实施拖放重新排列。虽然正常滚动工作正常,但在拖动时自动滚动完全坏了。
如果我抓住一个单元格并开始拖动,自动滚动只会告诉 table 滚动到顶部。如果我在拖动过程中使用触控板手动滚动,table 会不断弹出到顶部。如果我拖动其中一个顶部单元格,table 在靠近底部拖动时不会自动向下滚动。
我继承了 NSScrollView 并覆盖了 scrollClipView
方法。我看到它被一些内部自动滚动方法调用,坐标为 (0, 0)。
因为我看不到那个内部方法在做什么,而且 Goggle 和 SO 什么也没有出现,所以我有点卡住了。
有没有人运行以前处理过这个问题?根据过去的经验,我觉得它与 AutoLayout 相关,但我不知道是什么。或者可能是完全不相关的东西。
关于如何进一步排除故障的任何想法?
我运行进入同样的问题。在我的例子中,问题是我在 Interface Builder 中将 NSTableCellView
的高度设置为 10,000,这样水平分隔符就不会在实际行下方的空行中显示。
然而,我的NSTableCellViews
在运行时加载的实际高度是43px。
因此,当我开始拖动单元格对其重新排序时,NSScrollView
试图一次滚动 10,000 个像素,而不是一次滚动 43 个。
这似乎是一个错误,因为我的 NSOutlineView
子类确实实现了以下方法来动态设置每行的高度。
func outlineView(_ outlineView: NSOutlineView, heightOfRowByItem item: Any) -> CGFloat
显然在拖放操作期间自动滚动机制忽略了该方法,并且仅使用在 Interface Builder 中设置的值。
所以我只是在 Interface Builder 中将虚拟 NSTableCellView
的高度更改为 43px,我将接受为空行显示的水平分隔符。