1

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

我使用 获得鼠标位置NSEvent.mouseLocation(),但这给了我相对于屏幕本身的绝对值 NSPoint

self.frame(= NSButton.frame) 而是返回一些相对坐标,指的是按钮超级视图。

结果,self.frame.contains(NSEvent.mouseLocation())不起作用,我不知道如何解决!

感谢任何帮助!

4

1 回答 1

2

您可以使用 NSTrackingAreaOptions.MouseEnteredAndExited 将 NSTrackingArea 添加到您的 Button

或者您可以使用此代码

将 NSPoint 转换为 superview 的坐标系

let point = self.superview!.convert(self.window!.mouseLocationOutsideOfEventStream, from: nil)

然后只需使用 self.frame.contains

if self.frame.contains(point)

于 2017-01-21T17:01:20.867 回答