NSView mouseExited

时间:2011-04-13 01:18:02

标签: objective-c cocoa mouseevent nsview

我有一个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;
}

感谢。

1 个答案:

答案 0 :(得分:1)

我把它弄清楚了。添加跟踪区域后,我正在更改视图的框架,因此我需要重新计算跟踪区域。找到这种方法,只要需要更新跟踪区域,就会自动调用该方法:

- (void)updateTrackingAreas {

只需在此处重新计算您的跟踪区域。