Получение координат мыши в Swift

Swift новичок здесь.

У меня возникли проблемы с задачей, которая должна быть тривиальной. Все, что я хочу сделать, это получить координаты x, y курсора мыши по запросу. Я бы предпочел не ждать, пока произойдет движение мыши, прежде чем я смогу захватить указатели.

Поблагодарили бы за любую помощь!

Ответ 1

Вы должны взглянуть на NSEvent метод mouseLocation

редактирование/обновление: Xcode 8.2.1 • Swift 3.0.2

Если вы хотите отслеживать события в любом окне, когда ваше приложение активно, вы можете добавить LocalMonitorForEvents, соответствующий маске mouseMoved, и, если оно не активно, GlobalMonitorForEvents:

class ViewController: NSViewController {
    lazy var window: NSWindow = self.view.window!
    var mouseLocation: NSPoint {
        return NSEvent.mouseLocation
    }
    var location: NSPoint {
        return window.mouseLocationOutsideOfEventStream
    }
    override func viewDidLoad() {
        super.viewDidLoad()
        NSEvent.addLocalMonitorForEvents(matching: [.mouseMoved]) {
            print("mouseLocation:", String(format: "%.1f, %.1f", self.mouseLocation.x, self.mouseLocation.y))
            print("windowLocation:", String(format: "%.1f, %.1f", self.location.x, self.location.y))
            return $0
        }
        NSEvent.addGlobalMonitorForEvents(matching: [.mouseMoved]) { _ in
            self.mouseLocation = NSEvent.mouseLocation()
            print(String(format: "%.0f, %.0f", self.mouseLocation.x, self.mouseLocation.y))
        }
    }
}

примечание: вам нужно установить для вашего свойства окна acceptptsMouseMovedEvents значение true

window.acceptsMouseMovedEvents = true