如何解决如何在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 举报,一经查实,本站将立刻删除。