我有一个自定义NSButton
类,想检查(viewWillDraw
内)用户当前鼠标位置是否在按钮框内。
我使用NSEvent.mouseLocation()
获取鼠标位置,但这相对于屏幕本身提供了绝对 NSPoint
。
self.frame
(= NSButton.frame)会返回一些相对坐标,并参考按钮superview。
因此,self.frame.contains(NSEvent.mouseLocation())
不起作用,我不知道如何解决这个问题!
感谢任何帮助!
答案 0 :(得分:2)
您可以将NSTrackingArea与NSTrackingAreaOptions.MouseEnteredAndExited添加到您的按钮
或者您可以使用此代码
将NSPoint转换为superview的坐标系
let point = self.superview!.convert(self.window!.mouseLocationOutsideOfEventStream, from: nil)
然后只使用self.frame.contains
if self.frame.contains(point)