0

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しています。userInfomouseEntered(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を見ましたが、うまくいきません。

ここに画像の説明を入力

4

1 に答える 1