1

我有一个包含两个按钮的 NSPopover。当我打开弹出框时,以下代码可以在将鼠标悬停在按钮上并单击按钮时将光标更改为指向手,控制台中会出现“按下按钮”,并且会根据需要显示 NSColorPanel。

class Button: NSButton {
    override func resetCursorRects() {
        super.resetCursorRects()
        addCursorRect(bounds, cursor: .pointingHand)
    }
}

@IBAction func buttonTapped(action:Any) {

    print("Button pressed")

    let cp = NSColorPanel.shared
    cp.setTarget(self)
    NSColorPanel.setPickerMode(.none)
    cp.setAction(#selector(colorDidChange))
    cp.isContinuous = false
    cp.level = NSWindow.Level.statusBar
    cp.makeKeyAndOrderFront(self)

}

但是,如果我单击屏幕上的任何其他位置,然后返回到 NSPopover,则将鼠标悬停在按钮上时不再出现指向手形光标,并且仍然触发 onClick 事件(如登录中的“按下按钮”所证明的那样控制台),NSColorPanel 没有打开。

关于为什么会出现这种情况的任何建议?

4

1 回答 1

1

我遇到了这个问题,为我解决的是将下面的代码添加到弹出视图控制器viewWillAppear函数中。

NSApplication.shared.activate(ignoringOtherApps: true)
于 2020-04-13T10:03:33.363 回答