1

所以我有一个相当大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;
    }

    // ...
} 

这似乎运作良好,但我不确定这是否安全。

有人对这个问题有什么建议吗?

4

0 回答 0