デフォルトではmouseMovedをオーバライドしてもメッセージを受け取ってくれない。
(それなりの理由はあるのだろうが、ややこしい事を・・・と思わなくもない)
やり方としてはObjective-CではNSWindowで以下のようなやり方があるらしい。(試してない)
-(void)awakeFromNib
{
[self setAcceptsMouseMovedEvents:YES];
[self makeFirstResponder:self];
}
SwiftになってからはNSViewやNSImageViewでNSTrackingAreaの初期化時に指定するオプションでメッセージを受け取るようにするのがいいみたいです。
class customeImageView: NSImageView {
override func awakeFromNib() {
super.awakeFromNib()
configure()
}
func configure() {
let options:NSTrackingAreaOptions = [
.mouseMoved,
.cursorUpdate,
.activeAlways,
.enabledDuringMouseDrag
]
let trackingArea = NSTrackingArea(rect: bounds, options: options, owner: self, userInfo: nil)
addTrackingArea(trackingArea)
}
override func mouseDown(with event: NSEvent) {
NSLog("mouseDown")
}
override func mouseDragged(with event: NSEvent) {
NSLog("mouseDragged")
}
override func mouseMoved(with event: NSEvent) {
NSLog("mouseMoved")
}
}