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;
}
// ...
}
これはうまくいっているようですが、これが安全かどうかはわかりません。
この件について誰かアドバイスはありますか?