Невозможно запустить 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 ответ
Из документации:
NSTrackingAreaOptions
Тип данных, определенный для констант, указанных в параметре параметров
init(rect:options:owner:userInfo:)
, Эти константы описаны ниже; Вы можете указать несколько констант, выполнив с ними операцию побитового ИЛИ. В частности, вы должны указать одну или несколько констант типа отслеживания (то естьmouseEnteredAndExited
,mouseMoved
, а такжеcursorUpdate
) и одна из активных констант (то естьactiveWhenFirstResponder
,activeInKeyWindow
,activeInActiveApp
, а такжеactiveAlways
). Кроме того, вы можете указать любую из констант поведения (то естьassumeInside
,inVisibleRect
, а такжеenabledDuringMouseDrag
).
Это означает, что один или несколько из type
константы и один из active
константы обязательны.