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