我希望我的Mac应用程序打开其主窗口,并在任何鼠标移动时退出。
它可以工作,除了我需要先单击窗口,然后移动鼠标以退出我的应用程序。
要构建这个简单的应用程序,我将Xcode和内置项目“ Cocoa Mac”与“ Use Storyboards”一起使用,然后在我的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);
}
}
更新(2018年12月17日):
作为对票证的更新,我最终选择在keyDown事件(而不是mouseMoved事件)上退出应用程序,该方式是通过以下方式处理的:
class ViewController: NSViewController {
override func viewDidLoad() {
super.viewDidLoad()
override func keyDown(with event: NSEvent) {
NSApplication.shared.terminate(self);
}
...
}
...
}
(而且它与全屏模式兼容,很好。)