Tod*_*odd 3 cocoa nstrackingarea swift
我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)
Run Code Online (Sandbox Code Playgroud)
但是我似乎得到了运行时异常:
[General] trackingArea options 0x400 do not include a type
Run Code Online (Sandbox Code Playgroud)
这一定是很明显的,但是Google的所有搜索结果似乎都不能说明我做错了什么。如果我做:
var trackingID = self.addTrackingRect(target, owner: self, userData: nil, assumeInside: false)
Run Code Online (Sandbox Code Playgroud)
那么鼠标方法会触发,但显然只有在释放鼠标按钮时才会触发。
从文档中:
NSTrackingAreaOptions
为的options参数中指定的常数定义的数据类型
init(rect:options:owner:userInfo:)
。这些常量如下所述;您可以通过对它们执行按位或运算来指定多个常量。特别地,必须提供一个或多个跟踪型常量(即mouseEnteredAndExited
,mouseMoved
和cursorUpdate
)和有源常数之一(即,activeWhenFirstResponder
,activeInKeyWindow
,activeInActiveApp
,和activeAlways
)。此外,您可以指定任何行为常数(即assumeInside
,inVisibleRect
和enabledDuringMouseDrag
)。
这意味着需要一个或多个type
常数,并且其中一个active
常数是必需的。
归档时间: |
|
查看次数: |
551 次 |
最近记录: |