所以我有一个非常大的NSScrollView
,里面有几个自定义视图。在这些自定义视图中,我会覆盖-(void)updateTrackingAreas
,如下所示:
- (void)updateTrackingAreas
{
[self removeTrackingArea:trackingArea];
trackingArea = [[NSTrackingArea alloc] initWithRect:[self bounds]
options:(NSTrackingCursorUpdate |
NSTrackingActiveWhenFirstResponder |
NSTrackingInVisibleRect)
owner:self
userInfo:nil];
[self addTrackingArea:trackingArea];
}
但不知怎的,我觉得这有点不高效,因为我在NSScrollView中有大约50个自定义视图实例,并且一次只能看到其中5个实例,这样我就更新了不可见的跟踪区域视图。
所以我想如果视图不在NSScrollView的可见rect中,我会跳过更新跟踪区域。类似的东西:
- (void)updateTrackingAreas
{
if(!NSIntersectsRect([self frame], [[self superview] visibleRect]))
{
return;
}
// ...
}
这似乎运作良好,但我不确定这是否安全。
有没有人对此事有任何建议?