Зачем мне нужно нажимать перед получением событий мыши в MacOS Cocoa App? - PullRequest
0 голосов
/ 14 декабря 2018

Я хочу, чтобы мое приложение Mac открывало свое главное окно и выходило при любом движении мыши.

Это работает, за исключением того, что сначала мне нужно нажать на окно, а затем переместить мышь, чтобы мое приложениечтобы выйти.

Чтобы создать это простое приложение, я использовал Xcode и встроенный проект «Какао Mac» с «Использовать раскадровки», затем в моем ViewController.swift я отредактировал следующим образом:

override func viewDidLoad() {
    super.viewDidLoad()
    NSEvent.addGlobalMonitorForEvents(matching: .mouseMoved) { event in
        NSApplication.shared.terminate(self);
    }
}

Я думаю, что это может быть проблемой, чтобы сосредоточиться в первую очередь?Однако, когда приложение запускается, мне кажется, что оно уже сосредоточено на главном окне.

Есть мысли, где я делаю это неправильно?


Мое последнее желание - сделатьприложение работает в полноэкранном режиме и работает, добавляя одну строку, как показано ниже.Проблема в том, что после входа в полноэкранный режим «MouseMoved» больше не отвечает, даже когда я щелкаю внутри окна:

override func viewDidLoad() {
    super.viewDidLoad()

    view.enterFullScreenMode(NSScreen.main!, withOptions: nil)

    NSEvent.addGlobalMonitorForEvents(matching: .mouseMoved) { event in
        NSApplication.shared.terminate(self);
    }
}

ОБНОВЛЕНИЕ (17 декабря 2018 г.):

В качестве обновления моего билета я наконец-то решил выйти из приложения по событию keyDown (вместо события mouseMoved), которое я обработал следующим образом:

class ViewController: NSViewController {

    override func viewDidLoad() {

        super.viewDidLoad()

        override func keyDown(with event: NSEvent) {
            NSApplication.shared.terminate(self);
        }

        ...

    }

    ...

}

(Более того, этосовместим с полноэкранным режимом, что приятно.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...