5

我有一个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

这一定是非常明显的事情,但所有谷歌结果似乎都没有表明我做错了什么。如果我做:

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

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

4

1 回答 1

9

文档中:

NSTrackingAreaOptions

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

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

于 2017-03-13T18:53:20.180 回答