如何区分不同的NSTrackingAreas

时间:2015-06-12 17:36:18

标签: objective-c xcode macos swift cocoa

在我的主要NSWindow,我在不同的NSTextFields周围设置了多个跟踪区域(在下面表示为' obj')

var track: NSTrackingArea = NSTrackingArea(rect: obj.bounds, options: NSTrackingAreaOptions.MouseEnteredAndExited | NSTrackingAreaOptions.ActiveAlways | NSTrackingAreaOptions.CursorUpdate , owner: self, userInfo: nil)
    obj.addTrackingArea(track)

override func mouseEntered(theEvent: NSEvent) { }方法中,我希望能够为我指定的每个跟踪区域运行不同的块。我怎样才能分别识别每个跟踪区域?每个区域的唯一标识符是什么?

1 个答案:

答案 0 :(得分:3)

执行此操作的一种方法是在创建跟踪区域时使用userInfo字段。例如,为每个跟踪区域添加不同的NSNumber。您收到的NSEvent对象有一个userInfo属性,可以为您检索此对象。

可能更优雅的方法是继承NSTrackingArea,因为NSEvent也有trackingArea属性。