Вопрос простой - может ли NSDraggingSource
обнаружить отмену сеанса перетаскивания? Это должно происходить при нажатии клавиши Esc во время перетаскивания. Согласно моим исследованиям, нет никакой разницы между перетаскиванием элемента на целевой объект без перетаскивания (или объект, возвращающий false performDragOperation(_:)
) и отменой. И мне нужно различать эти два и выполнять разные действия с объектом NSDraggingSource
.
Любое предложение более чем приветствуется, как обычно ;-)
RunLoop
находится в режимеEventTracking
. Таким образом, все события сохраняются. Невозможно получить событиеkeyDown
, если только не создать событиеIOHIDManager
и не запланировать его вRunLoop
. К сожалению, фреймворкIOKit
практически не используется Swift.... - person Ivaylo Nikolov   schedule 06.12.2018NSApplication
, вdraggingSession(_:endedAt:operation:)
егоtype
равноLMouseUp
илиKeyDown
. - person Willeke   schedule 06.12.2018currentEvent
будет событиемkeyDown
в случае отмены с помощью Esc - это единственное событиеkeyDown
, потребляемое при перетаскивании ;-). Пожалуйста, опишите это как ответ, чтобы я мог принять его. - person Ivaylo Nikolov   schedule 06.12.2018