addCursorRect терпит неудачу на NSButton после того, как NSPopover теряет фокус - PullRequest
1 голос
/ 08 апреля 2020

У меня есть 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)

}

Однако, если я щелкну где-нибудь еще на экране, а затем go вернусь к NSPopover, курсор указывающей руки больше не будет появляться при наведении курсора на кнопку, и пока событие onClick все еще срабатывает (о чем свидетельствует ' Нажата кнопка «(вошли в консоль)), панель NSColorPanel не открывается.

Есть предложения относительно того, почему это может иметь место?

1 Ответ

0 голосов
/ 13 апреля 2020

Я столкнулся с этой проблемой, и я решил, что добавил следующий код в функцию контроллера 10000 * popover view.

NSApplication.shared.activate(ignoringOtherApps: true)
...