我的 NSMenuItems 上有一个自定义 (SwiftUI) 视图。当我没有子视图时,按钮和水龙头工作正常。但是一旦我添加了一个子菜单,基本项目就没有反应了。
我试过将它们设置为启用,在谷歌搜索后添加一些“validateMenu”,但我似乎无法让它工作。有人知道吗?
这是我当前(未在屏幕截图中)的自定义 NSView,它具有我在该站点上发现的所有潜在解决方案的技巧。还是不行。
如果您在子菜单出现之前足够快地单击,则可以触发 mouseDown 事件..
class xxx: NSView {
override func viewDidMoveToWindow() {
print("x 2")
super.viewDidMoveToWindow()
window?.becomeKey()
updateTrackingAreas()
}
override func acceptsFirstMouse(for event: NSEvent?) -> Bool {
true
}
override func updateTrackingAreas() {
let trackingArea = NSTrackingArea(rect: bounds, options: [.enabledDuringMouseDrag, .mouseEnteredAndExited, .activeInActiveApp], owner: self, userInfo: nil)
addTrackingArea(trackingArea)
}
override func mouseEntered(with event: NSEvent) {
window?.becomeKey()
}
override func mouseDown(with event: NSEvent) {
print("mousup 2")
if let cn = self.enclosingMenuItem {
print(cn)
if let m = cn.menu {
print(m)
m.cancelTracking()
m.performActionForItem(at: m.index(of: cn))
print("xx 2")
}
}
}
}