Я пытаюсь передать NSPoint через NotificationCenter.Я построил подкласс NSView с определенными тремя методами:
override func mouseDragged(with event: NSEvent) {
post(event: event)
}
override func mouseDown(with event: NSEvent) {
post(event: event)
}
func post(event: NSEvent) {
let point = convert(event.locationInWindow, from: nil)
print ("sending \(point)")
NotificationCenter.default.post (
name: NSNotification.Name.mousePositionChanged,
object: point )
}
Я зарегистрировал наблюдателя как:
NotificationCenter.default.addObserver(
self,
selector: #selector(self.mouseMovedTo(_:)),
name: NSNotification.Name.mousePositionChanged,
object: nil)
... и функцию для получения:
@objc func mouseMovedTo(_ point:NSPoint) {
print ("receive \(point)")
}
Уведомление работает - когда я нажимаю кнопку мыши, AppDelegate знает об этом и запускает mouseMovedTo
, но получает только точку (0,0):
sending (0.350715866416309, 0.308759973404255)
receive (0.0, 0.0)
sending (0.350187768240343, 0.30802384118541)
receive (0.0, 0.0)
sending (0.349039364270386, 0.306409099544073)
receive (0.0, 0.0)
.....
Как передать правильные значения NSPoint?Это ошибка?
Я пытался передать NSEvent, но у меня была ошибка, когда я пытался convert(event.locationInWindow, from: someView)
внутри AppDelegate.Некоторые идеи?