我正在重写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
}我的代码是基于苹果提供的这个目标-C样本代码。引用SuggestionsWindowController.m的第372行
HighlightingView *view = [(NSDictionary*)[event userData] objectForKey: kTrackerKey];那么我如何阅读事件的userData呢?
我看过这个StackOverflow问答,但它不起作用。

发布于 2015-07-19 18:35:50
如果要从事件中读取trackerData,则必须从跟踪区域获取用户信息。
if let userInfo = theEvent.trackingArea?.userInfo {
let trackerData = userInfo["myTrackerKey"]! as! NSView
// do something with the view
}https://stackoverflow.com/questions/31504472
复制相似问题