NSResponder のmouseEntered(theEvent: NSEvent)
メソッドをオーバーライドしており、Swift で NSTrackingArea を作成するときに設定した値を取得したいと考えています。このコンストラクターを使用して 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
}
私のコードは、Apple が提供するこのObjective-C サンプル コードに基づいています。の 372 行目を引用するにはSuggestionsWindowController.m
:
HighlightingView *view = [(NSDictionary*)[event userData] objectForKey: kTrackerKey];
では、どうすればイベントを読むことができuserData
ますか?
この StackOverflow Q&Aを見ましたが、うまくいきません。