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