我有一个自定义NSButton
类,想检查(在viewWillDraw
)用户当前的鼠标位置是否在按钮框架内。
我使用 获得鼠标位置NSEvent.mouseLocation()
,但这给了我相对于屏幕本身的绝对值 NSPoint
。
self.frame
(= NSButton.frame) 而是返回一些相对坐标,指的是按钮超级视图。
结果,self.frame.contains(NSEvent.mouseLocation())
不起作用,我不知道如何解决!
感谢任何帮助!
我有一个自定义NSButton
类,想检查(在viewWillDraw
)用户当前的鼠标位置是否在按钮框架内。
我使用 获得鼠标位置NSEvent.mouseLocation()
,但这给了我相对于屏幕本身的绝对值 NSPoint
。
self.frame
(= NSButton.frame) 而是返回一些相对坐标,指的是按钮超级视图。
结果,self.frame.contains(NSEvent.mouseLocation())
不起作用,我不知道如何解决!
感谢任何帮助!
您可以使用 NSTrackingAreaOptions.MouseEnteredAndExited 将 NSTrackingArea 添加到您的 Button
或者您可以使用此代码
将 NSPoint 转换为 superview 的坐标系
let point = self.superview!.convert(self.window!.mouseLocationOutsideOfEventStream, from: nil)
然后只需使用 self.frame.contains
if self.frame.contains(point)