我在尝试阻止光标更改时遇到问题。我尝试在整个窗口上放置一个覆盖视图,但是,如果在该覆盖下存在一个NSTextView
,这将强制光标改变。我想阻止这种情况,并保留箭头光标,直到我的覆盖视图被删除。
覆盖 cursorUpdate 方法不起作用:
override func cursorUpdate(with event: NSEvent) {
return
}
谢谢!
即使这个问题的答案也无济于事。此解决方案仅在覆盖视图小于 TextView 时有效。
如果NSTextView
是你的,你可以通过继承和覆盖那里获得你想要的行为mouseMoved:
。如果您搜索,有几个示例可用。
如果子类化文本视图不是一个选项,最好的办法是使用NSWindow
你的覆盖。
NSWindowStyleMaskBorderless
使用样式掩码创建窗口。addChildWindow:ordered
定位叠加层这个答案很好地解释了它。
像这样的东西:
var rect = NSRect(x: self.window.frame.origin.x, y: self.window.frame.origin.y, width: self.window.contentView.frame.size.width, height: self.window.contentView.frame.size.height)
var overlay = NSWindow.init(contentRect: rect, styleMask: .borderless, backing: .buffered, defer: false)
overlay.backgroundColor = .red
overlay.isOpaque = false
overlay.alphaValue = 0.5
self.window.addChildWindow(overlay, ordered: .above)
现在您可以将叠加视图添加为窗口的contentView
. 光标不会响应下面的视图而改变。
另请参阅。