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:
уволен (см. комментарии).