无法启动NSTrackingArea

时间:2017-03-13 18:17:24

标签: swift cocoa nstrackingarea

我有一个NSOutlineView,我想在拖放过程中更新mouseEntered:mouseExited:。所以我尝试添加NSTrackingArea。在我的大纲视图子类中,我有:

let target = self.frame
let options = [NSTrackingAreaOptions.enabledDuringMouseDrag]
let area = NSTrackingArea(rect: target, options: options, owner: self, userInfo: nil)
self.addTrackingArea(area)

但我似乎得到了运行时异常:

[General] trackingArea options 0x400 do not include a type

它必须是非常明显的东西,但所有Google结果似乎都没有表明我做错了什么。如果我这样做:

var trackingID = self.addTrackingRect(target, owner: self, userData: nil, assumeInside: false)

然后鼠标方法会触发,但显然只有在释放鼠标按钮时才会触发。

1 个答案:

答案 0 :(得分:4)

来自documentation

  

<强> NSTrackingAreaOptions

     

init(rect:options:owner:userInfo:)的options参数中指定的常量定义的数据类型。这些常数如下所述;您可以通过对它们执行按位或运算来指定多个常量。 特别是,您必须提供一个或多个跟踪类型常量(即mouseEnteredAndExitedmouseMovedcursorUpdate和一个活动常数(即activeWhenFirstResponderactiveInKeyWindowactiveInActiveAppactiveAlways)。 此外,您可以指定任何行为常量(即assumeInsideinVisibleRectenabledDuringMouseDrag)。

这意味着需要一个或多个type常量和一个active常量。