Я переопределяю метод mouseEntered(theEvent: NSEvent)
NSResponder и хочу получить значение, которое я установил при создании NSTrackingArea в Swift. Я использую этот конструктор для создания NSTrackingArea и передачи следующего объекта как userInfo
.
let trackerData = ["myTrackerKey": view]
let trackingArea = NSTrackingArea(rect: trackingRect, options: [.EnabledDuringMouseDrag, .MouseEnteredAndExited, .ActiveInActiveApp], owner: self, userInfo: trackerData)
(view : NSView
и trackingRect : NSRect
существуют)
Я устанавливаю trackerData
как userInfo
, чтобы я мог прочитать его позже в mouseEntered(theEvent: NSEvent)
.
override func mouseEntered(theEvent: NSEvent) {
// This does not work
let data1 = theEvent.userData as [NSObject : AnyObject]
let data2 = theEvent.userData as [String : NSView]
let data3 = theEvent.userData as NSDictionary
}
Мой код основан на этом примере кода Objective-C предоставлено Apple. Чтобы процитировать строку 372 из SuggestionsWindowController.m
:
HighlightingView *view = [(NSDictionary*)[event userData] objectForKey: kTrackerKey];
Итак, как я могу прочитать userData
события?
Я просмотрел эти вопросы и ответы по StackOverflow, но это не работает.