我有一个NSView,基本上,即使我的鼠标没有离开定义的帧,只是在其中移动,调用mouseExited函数。这是假设是或者我做错了什么?这个NSView有几个子视图,它是自定义的,下面是代码:
- (id)initWithDelegate:(id)del {
if (self = [super init]) {
[del retain];
delegate = del;
}
return self;
}
- (void)dealloc {
[delegate release];
[super dealloc];
}
- (void)viewDidMoveToWindow {
[self addTrackingRect:[self bounds]
owner:self
userData:nil
assumeInside:NO];
}
- (void)mouseEntered:(NSEvent *)theEvent {
[delegate mouseEntered];
}
- (void)mouseExited:(NSEvent *)theEvent {
NSLog(@"mouse exited");
[delegate mouseExited];
}
- (void)mouseDown:(NSEvent *)theEvent {
[delegate mouseDown];
}
- (NSView *)hitTest:(NSPoint)aPoint {
return self;
}
感谢。
答案 0 :(得分:1)
我把它弄清楚了。添加跟踪区域后,我正在更改视图的框架,因此我需要重新计算跟踪区域。找到这种方法,只要需要更新跟踪区域,就会自动调用该方法:
- (void)updateTrackingAreas {
只需在此处重新计算您的跟踪区域。