如何在MacOS中的当前NSView外部检测鼠标事件?

问题描述

由于我正在使用CALayer's mask属性来绘制和剪辑内容,遮罩的大小类似于带有10像素边框的NSView,我的某些内容比当前的{{ 1}}大小(10像素)。但是目前,仅当鼠标移至NSView's区域时才检测到鼠标移动事件,我正尝试使用NSView的负数原点,但似乎不起作用?

有人知道如何在当前视图之外检测鼠标移动事件吗?

谢谢

埃里克

我的问题的更多细节:

我需要在视图外(位于更大的视图内)绘制一些内容并检测鼠标 事件发生在我的内容上,这是我目前的局限性,我不能使用较大的视图来绘制整个内容,只是将其视为特殊的阴影类型,并且需要检测阴影上的鼠标事件,因此我要使用遮罩剪辑整个内容。这是我用来掩盖面具的代码。边距是我要从视图中扩展多少像素。 (将此功能直接应用于NSView)

NSTrackingArea

我用于应用跟踪区域的代码在此处(在NSView子类内部):

    func applyMaskToView(src: NSView,margin: CGFloat) {
    src.wantsLayer = true
    
    let mask = CALayer()
    mask.backgroundColor = NSColor.black.cgColor
    let maskFrame = CGRect(x: -margin,y: -margin,width: src.frame.size.width + 2*margin,height: src.frame.size.height + 2*margin )
    mask.frame = maskFrame
    src.layer?.masksToBounds = false
    src.layer?.mask = mask
    return
}

如果我不使用跟踪区域,则上面代码中提到的空白区域将无法接收到鼠标事件。但是,我现在只能收到“鼠标移动”。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)