证明游标位置是否在NSButton的框架内

时间:2017-01-21 16:31:45

标签: swift mouseevent frame nsevent nspoint

我有一个自定义NSButton类,想检查(viewWillDraw内)用户当前鼠标位置是否在按钮框内。

我使用NSEvent.mouseLocation()获取鼠标位置,但这相对于屏幕本身提供了绝对 NSPoint

self.frame(= NSButton.frame)会返回一些相对坐标,并参考按钮superview。

因此,self.frame.contains(NSEvent.mouseLocation())不起作用,我不知道如何解决这个问题!

感谢任何帮助!

1 个答案:

答案 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)