我有一个包含两个按钮的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不会打开。
对于为什么会出现这种情况,有什么建议吗?
发布于 2020-04-13 18:03:33
我遇到了这个问题,解决它的方法是将下面的代码添加到popover视图控制器的viewWillAppear函数中。
NSApplication.shared.activate(ignoringOtherApps: true)https://stackoverflow.com/questions/61107269
复制相似问题