【问题标题】:Prove if cursors location is within NSButton’s frame证明光标位置是否在 NSButton 的框架内
【发布时间】:2017-01-21 16:31:45
【问题描述】:

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

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

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

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

感谢任何帮助!

【问题讨论】:

  • 您可以尝试将鼠标位置转换为按钮框架。在 ios 中,uiview 具有将点从一个视图转换为其他视图的方法,反之亦然。
  • @Dasem 感谢您的回复!无法弄清楚如何。 NSButton 不是视图。

标签: swift mouseevent frame nsevent nspoint


【解决方案1】:

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

或者你可以使用这个代码

将NSPoint转换为superview的坐标系

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

然后只使用 self.frame.contains

if self.frame.contains(point)

【讨论】:

  • 感谢您的回复!就我而言,我特别需要在viewWillDraw 中检查这一点,因为我可能没有输入鼠标,我想根据它来更改按钮的行为。
  • 现在有帮助吗?
猜你喜欢
  • 2013-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-24
相关资源
最近更新 更多