我在尝试阻止光标更改时遇到问题。 我尝试在整个窗口上放置一个覆盖视图,但是,如果在该覆盖下存在NSTextView,这将强制光标改变。我想阻止它,并保持箭头光标,直到我的叠加视图将被删除。
覆盖cursorUpdate方法不起作用......
override func cursorUpdate(with event: NSEvent) {
return
}
谢谢!
即使this (question 32447739) 答案也无济于事。仅当叠加视图小于TextView时,此解决方案才有效。
答案 0 :(得分:2)
如果NSTextView
是您的,那么您可以通过子类化并覆盖mouseMoved:
来获得所需的行为。 There are several examples available, if you search
如果不能选择对文本视图进行子类化,那么最好的方法是使用NSWindow
作为叠加层。
NSWindowStyleMaskBorderless
样式掩码创建窗口。addChildWindow:ordered
定位叠加层This answer解释得很清楚。
这样的事情:
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
。光标不会响应下面的视图而改变。
请参阅also。