我有一个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;
}谢谢。
发布于 2011-04-14 05:18:20
我想通了。添加跟踪区域后,我更改了视图的框架,因此需要重新计算跟踪区域。找到此方法,该方法将在跟踪区域需要更新时自动调用:
- (void)updateTrackingAreas {只需在此处重新计算您的跟踪区域即可。
https://stackoverflow.com/questions/5643409
复制相似问题