Невозможно запустить 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 константы обязательны.

Другие вопросы по тегам