我在NSCrollView中有一个NSCollectionView。滚动视图水平滚动以沿着项目行移动。每个集合项目中都有一个垂直滚动的NSOutlineView。
我有用于打开和关闭集合项的NSButton对象,作为集合中的补充视图。我在这些按钮上设置了NSTrackingAreas以支持鼠标悬停效果。
这是正确的,直到我滚动,在这一点上,NSTrackingArea区域被明显地落在了后面(当鼠标位于按钮所在的位置,而不是它所在的位置时,鼠标悬停效果就会发生(。
我在按钮类的updateTrackingAreas中重建了我的跟踪区域,这是调用的,但频率不够。
我曾尝试在设置跟踪区域时使用.inVisibleRect,而不是明确地重建它们,但这并不能改善跟踪更新。
当滚动发生时,我曾尝试在NSCollectionView上调用updateTrackingAreas,但它从未像我预期的那样传递给子视图。
顺便说一句,我的集合视图项中也有NSTextViews和工具提示,这些工具提示也非常古怪。他们经常被吊死。指针指针指向链接经常会错位。
感觉默认的updateTrackingArea好像被过度优化了,并且没有像它应该的那样经常被调用。
因此,我即将开始构建我自己的跟踪区域跟踪器,以便在默认情况下不更新视图时注册和更新我的视图。。。
但也许有人能看到我明显缺少的东西?非常感谢。
当滚动视图嵌套不正确时,跟踪区域设置可能会被微妙地破坏。有关嵌套滚动视图的详细信息,请参阅此处的答案:
NSCrollView在另一个NSCrollView中