mouseMoved запускается за пределами NSTrackingArea

Я настраиваю NSTrackingArea для определенной части моего NSTextView для того, чтобы иметь mouseMoved и т. д. методы, которые должны запускаться только внутри этого прямоугольника. Вот мой код:

let rect = ...
let ta = NSTrackingArea(rect: rect,
                     options: [.mouseEnteredAndExited, .mouseMoved, .activeWhenFirstResponder, .inVisibleRect],
                       owner: self,
                    userInfo: nil)
addTrackingArea(ta)

Тем не мение, mouseMoved и другие. уволены за весь вид.

Итак, мой вопрос: почему MouseMoved срабатывает, когда мышь находится вне области отслеживания? Есть ли ошибка в коде выше?

РЕДАКТИРОВАТЬ:

По всей видимости, где-то для всего представления добавлена ​​отслеживающая область, как я вижу на панели отладки:

[NSTrackingArea 0x60000212a3f0: rect={{0, 0}, {800, 319.5}}, owner=0x60000390da00 userData=(null)
    NSTrackingMouseEnteredAndExited NSTrackingMouseMoved 
    NSTrackingActiveWhenFirstResponder
    NSTrackingInVisibleRect 
    installed enabled ]

Удаление super.updateTrackingAreas() это не меняет, так что-то еще происходит. Я могу удалить это с помощью trackingAreas.forEach { if $0.rect == self.bounds { removeTrackingArea($0)} }, но, кажется, добавил обратно, когда mouseMoved: уволен (см. комментарии).

0 ответов

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