NSViewのmouseEnteredとmouseExitedを有効にする方法
NSViewのmouseEnteredメッセージとmouseExitedメッセージはマウス移動した時にViewが受信するメッセージだ。
mouseEnteredはNSViewにマウスが入ったとき、mouseExitedはNSViewからマウスが出たときに受信する。
しかし、この2つのメソッドはデフォルトの状態では呼ばれない。
NSViewのサブクラスで下記のようにメソッドをオーバーライドし、
マウスの移動を検知する領域を指定するとmouseEnteredメッセージとmouseExitedメッセージが受信できるようになる。
- (void)viewDidMoveToWindow { trackingRect = [self addTrackingRect:[self bounds] owner:self userData:NULL assumeInside:NO]; } - (void)setFrame:(NSRect)frame { [super setFrame:frame]; [self removeTrackingRect:trackingRect]; trackingRect = [self addTrackingRect:[self bounds] owner:self userData:NULL assumeInside:NO]; }