【发布时间】:2021-06-05 14:51:03
【问题描述】:
目前我在按钮(NSButton)上有一个小问题,这些按钮有一个跟踪区域和视图(NSViewoverlay),这是我的设置:
自定义按钮:
class AppButton: NSButton {
override func updateTrackingAreas() {
super.updateTrackingAreas()
let area = NSTrackingArea(
rect: self.bounds,
options: [.mouseEnteredAndExited, .activeAlways],
owner: self,
userInfo: nil
)
self.addTrackingArea(area)
}
override func mouseEntered(with event: NSEvent) {
NSCursor.pointingHand.set()
}
override func mouseExited(with event: NSEvent) {
NSCursor.arrow.set()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
这个按钮类的一个实例用于一个非常基本的NSView。
当我将鼠标悬停在按钮上时,光标会正确更改。
当我点击按钮时,按钮上方会打开一个新的叠加层(NSView)...
这就是问题的开始:
当我将鼠标悬停在按钮所在的覆盖层上时,光标仍然会改变...
我不知道 NSTrackingArea 正在浏览所有视图..
我该如何解决这个问题?
我可以在叠加层(NSView) 上设置任何属性以以某种方式禁用按钮上的NSTrackingArea?
谢谢!!
【问题讨论】:
标签: swift macos nsview nsbutton nstrackingarea