mouseExited не вызывается, когда мышь покидает область отслеживания во время прокрутки

Почему mouseExited / mouseEntered не вызывается, когда мышь выходит из NStrackingArea путем прокрутки или анимации?

I создайте такой код:

Мышь вошла и вышла:

-(void)mouseEntered:(NSEvent *)theEvent {
    NSLog(@"Mouse entered");
}

-(void)mouseExited:(NSEvent *)theEvent
{
    NSLog(@"Mouse exited");
}

Область отслеживания:

-(void)updateTrackingAreas
{ 
    if(trackingArea != nil) {
        [self removeTrackingArea:trackingArea];
        [trackingArea release];
    }

    int opts = (NSTrackingMouseEnteredAndExited | NSTrackingActiveAlways);
    trackingArea = [ [NSTrackingArea alloc] initWithRect:[self bounds]
                                             options:opts
                                               owner:self
                                            userInfo:nil];
    [self addTrackingArea:trackingArea];
}

Подробнее:

Я добавил NSViews в качестве вложенных представлений в представлении NSScrollView. У каждого NSView есть своя собственная область отслеживания, и когда я прокручиваю свой scrollView и покидаю область отслеживания, «mouseExited» не вызывается, но без прокрутки все работает нормально. Проблема в том, что когда я прокручиваю, вызывается updateTrackingAreas, и я думаю, что это создает проблемы.

* Та же проблема с NSView без добавления его в качестве subview, так что это не проблема.

29
задан Justin Boo 1 February 2012 в 08:55
поделиться