0

我在 NSScrollView 中有一个 NSCollectionView。滚动视图水平滚动以沿项目行移动。每个集合项内部都有一个垂直滚动的 NSOutlineView。

我有用于打开和关闭集合项目的 NSButton 对象 - 作为我集合中的补充视图。我在这些按钮上设置了 NSTrackingAreas 以支持鼠标悬停效果。

这可以正常工作,直到我滚动,此时 NSTrackingArea 区域明显落后(当鼠标位于按钮所在的位置时,鼠标悬停效果发生,而不是它所在的位置)。

我在按钮类的 updateTrackingAreas 中重建了我的跟踪区域,这被调用了,但不够频繁。

我在设置跟踪区域时尝试使用 .inVisibleRect,而不是显式重建它们,但这并不能改善跟踪更新。

当滚动发生时,我尝试在 NSCollectionView 上调用 updateTrackingAreas,但它从未像我预期的那样传递给子视图。

附带说明一下,我的集合视图项目中也有 NSTextViews,它们的工具提示也非常脆弱。他们经常被挂着。指向链接上的手形光标经常错位。

感觉好像默认的 updateTrackingArea 被过度优化了,并且没有像它应该的那样经常被调用。

因此,我将着手构建自己的跟踪区域跟踪器,以在默认情况下未更新视图时注册和更新我的视图...

...但也许有人可以看到我遗漏的明显东西?谢谢你。

4

1 回答 1

0

错误地嵌套滚动视图时,跟踪区域设置可能会被巧妙地破坏。有关详细信息,请参阅此处有关嵌套滚动视图的答案:

另一个 NSScrollView 中的 NSScrollView

于 2018-12-19T09:42:28.593 回答