我有一个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)
然后鼠标方法会触发,但显然只有在释放鼠标按钮时才会触发。
答案 0 :(得分:4)
<强> NSTrackingAreaOptions 强>
为
init(rect:options:owner:userInfo:)
的options参数中指定的常量定义的数据类型。这些常数如下所述;您可以通过对它们执行按位或运算来指定多个常量。 特别是,您必须提供一个或多个跟踪类型常量(即mouseEnteredAndExited
,mouseMoved
和cursorUpdate
)和一个活动常数(即activeWhenFirstResponder
,activeInKeyWindow
,activeInActiveApp
和activeAlways
)。 此外,您可以指定任何行为常量(即assumeInside
,inVisibleRect
和enabledDuringMouseDrag
)。
这意味着需要一个或多个type
常量和一个active
常量。