问题描述
由于我正在使用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 (将#修改为@)