0
我重寫了NSResponder的mouseEntered(theEvent: NSEvent)
方法,並希望檢索在Swift中創建NSTrackingArea時設置的值。我正在使用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
}
我的代碼基於Apple提供的Objective-C Sample Code。引述線372 SuggestionsWindowController.m
的:
HighlightingView *view = [(NSDictionary*)[event userData] objectForKey: kTrackerKey];
那麼,怎樣才能我讀了事件的userData
?我看過this StackOverflow Q&A,但它不起作用。