为什么当鼠标通过滚动或动画从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同样的问题而不将其添加为子视图,因此这不是问题.