【发布时间】:2020-05-14 16:50:10
【问题描述】:
我正在使用 Swift 制作一个 mac 应用程序,这个应用程序有一个自定义视图(一个扩展 NSView 并覆盖其 draw 方法的类)。现在,我想禁用此视图上的所有鼠标单击和鼠标拖动,并将它们传递给在我的应用程序下运行的其他应用程序。
我尝试了以下方法(从 Apple 文档和其他 SO 问题中收集)来禁用对我的视图的点击,但到目前为止对我没有任何效果:
1.在我的自定义 View 类中覆盖 hitTest
override func hitTest(_ point: NSPoint) -> NSView? {
let view = super.hitTest(point)
return view == self ? nil : view
}
2。在我的自定义 View 类中覆盖 AcceptFirstMouse
override func acceptsFirstMouse(for event: NSEvent?) -> Bool {
return false
}
3.在 ViewController 以及我的自定义 View 类中覆盖 mouseDown
override func mouseDown(with event: NSEvent) {
// do nothing
}
4.在 ViewController 以及我的自定义 View 类中覆盖 mouseDragged
override func mouseDragged(with event: NSEvent) {
// do nothing
}
我错过了什么吗?
【问题讨论】:
-
这个视图(和超级视图等)是否有透明(alpha 1.0)区域?
-
我猜透明 => alpha 0.0。不,视图没有透明区域。
标签: swift macos cocoa swift5.2