所以我有一个相当大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 的可见矩形中,我会跳过更新跟踪区域。就像是:
- (void)updateTrackingAreas
{
if(!NSIntersectsRect([self frame], [[self superview] visibleRect]))
{
return;
}
// ...
}
这似乎运作良好,但我不确定这是否安全。
有人对这个问题有什么建议吗?