Я переопределяю метод NSResponder mouseEntered(theEvent: NSEvent)
и хочу получить значение, которое я установил при создании NSTrackingArea в Swift. Я использую конструктор this для создания NSTrackingArea и передаю следующий объект как userInfo
.UnsafeMutablePointer <Void> to [NSObject: AnyObject]
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 Sample Code предоставленной Apple. Процитируем строки 372 из SuggestionsWindowController.m
:
HighlightingView *view = [(NSDictionary*)[event userData] objectForKey: kTrackerKey];
Так как я могу читать мероприятия userData
?
Я посмотрел this StackOverflow Q&A, но он не работает.