问题:
我有一个 NSScrollView。我正在使用它来实现一个自定义的“表格视图”,其中包含实际上是 NSView 的数据行。(注意:这不是 NSTableView 的实例。)
当我垂直滚动(没有水平滚动)时,我使用 boundsChanged 通知添加(作为 scrollView 的 contentView 的子视图)变得可见的 NSView(具有与 scrollView 的文档可见矩形相交的框架)并删除那些不再可见(scrollView 的可见矩形之外的帧。)
除了惯性滚动之外,这个过程非常有效。如果我将光标悬停在单元格 X 上并且我轻拂触控板以惯性快速向下滚动,则单元格 X 会迅速离开可见的矩形,因此会从滚动视图的 contentView 中删除。但是,这会杀死惯性滚动。如果我不将单元格 X 作为子视图删除,则惯性滚动效果很好。
我需要的:
一种保持惯性滚动的方法,同时仍然删除用户开始滚动手势时光标恰好位于顶部的 NSView。
我试过的:
我看过 NSResponder 的方法:
-scrollWheel:(NSEvent *)theEvent
默认实现将 scrollWheel 传递给下一个响应者。因此,我将 NSScrollView 子类化并实现了此方法,以尝试阻止它将 scrollWheel 事件传递给 scrollView 的 contentView 内的各个子视图。没用。
然后我进入我的 NSViews(我添加到 contentView 的那些)并覆盖 scrollWheel 以将事件传递回 scrollView 本身。没用。
在这两种情况下我仍然会滚动,但不是惯性。
有任何想法吗?谢谢!