我在 NSScrollView 中有一个 NSCollectionView。滚动视图水平滚动以沿项目行移动。每个集合项内部都有一个垂直滚动的 NSOutlineView。
我有用于打开和关闭集合项目的 NSButton 对象 - 作为我集合中的补充视图。我在这些按钮上设置了 NSTrackingAreas 以支持鼠标悬停效果。
这可以正常工作,直到我滚动,此时 NSTrackingArea 区域明显落后(当鼠标位于按钮所在的位置时,鼠标悬停效果发生,而不是它所在的位置)。
我在按钮类的 updateTrackingAreas 中重建了我的跟踪区域,这被调用了,但不够频繁。
我在设置跟踪区域时尝试使用 .inVisibleRect,而不是显式重建它们,但这并不能改善跟踪更新。
当滚动发生时,我尝试在 NSCollectionView 上调用 updateTrackingAreas,但它从未像我预期的那样传递给子视图。
附带说明一下,我的集合视图项目中也有 NSTextViews,它们的工具提示也非常脆弱。他们经常被挂着。指向链接上的手形光标经常错位。
感觉好像默认的 updateTrackingArea 被过度优化了,并且没有像它应该的那样经常被调用。
因此,我将着手构建自己的跟踪区域跟踪器,以在默认情况下未更新视图时注册和更新我的视图...
...但也许有人可以看到我遗漏的明显东西?谢谢你。