添加 subvmenu 时禁用 NSMenuItem 交互

问题描述 投票:0回答:0

我的 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")
            }
        }
    }
}
swiftui nsmenu nsmenuitem
© www.soinside.com 2019 - 2024. All rights reserved.