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

Prove if cursors location is within NSButton’s frame

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

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

self.frame (= NSButton.frame) 而不是 returns 一些 relative 坐标,指的是按钮超级视图。

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

感谢任何帮助!

您可以将带 NSTrackingAreaOptions.MouseEnteredAndExited 的 NSTrackingArea 添加到您的按钮

或者您可以使用此代码

将 NSPoint 转换为父视图的坐标系

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

然后只需使用 self.frame.contains

if self.frame.contains(point)