确保NSTrackingArea在嵌套的NSCrollViews中刷新



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

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

这是正确的,直到我滚动,在这一点上,NSTrackingArea区域被明显地落在了后面(当鼠标位于按钮所在的位置,而不是它所在的位置时,鼠标悬停效果就会发生(。

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

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

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

顺便说一句,我的集合视图项中也有NSTextViews和工具提示,这些工具提示也非常古怪。他们经常被吊死。指针指针指向链接经常会错位。

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

因此,我即将开始构建我自己的跟踪区域跟踪器,以便在默认情况下不更新视图时注册和更新我的视图。。。

但也许有人能看到我明显缺少的东西?非常感谢。

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

NSCrollView在另一个NSCrollView中

相关内容

  • 没有找到相关文章

最新更新