相关疑难解决方法(0)

鼠标在滚动时离开trackingArea时不会调用mouseExited

为什么当鼠标通过滚动或动画从NStrackingArea退出时,不会调用mouseExited/mouseEntered?

我创建这样的代码:

鼠标进入和退出:

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

-(void)mouseExited:(NSEvent *)theEvent
{
    NSLog(@"Mouse exited");
}
Run Code Online (Sandbox Code Playgroud)

跟踪区域:

-(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];
}
Run Code Online (Sandbox Code Playgroud)

更多细节:

我在NSScrollView的视图中添加了NSView作为子视图.每个NSView都有自己的跟踪区域,当我滚动我的scrollView并离开跟踪区域"mouseExited"时没有调用但没有滚动一切正常.问题是,当我滚动"updateTrackingAreas"被调用时,我认为这会产生问题.

*仅使用NSView同样的问题而不将其添加为子视图,因此这不是问题.

macos cocoa objective-c nstrackingarea

29
推荐指数
1
解决办法
6917
查看次数

标签 统计

cocoa ×1

macos ×1

nstrackingarea ×1

objective-c ×1