NSTrackingArea в расширении Today не предоставляет событий
Я работаю над расширением Today для Mac, которое должно управлять iTunes. Это работает и все, но мой пользовательский интерфейс состоит из квадратного изображения обложки, наложенного на эффекты, которые содержат метаданные и элементы управления:
Теперь, очевидно, было бы неплохо, если бы я мог как-то заставить их появляться только тогда, когда мне было нужно - скажем, когда курсор мыши был выше вида моего расширения.
Поскольку я имел дело с такими вещами раньше, я решил собрать немного NSView
подкласс, который использует NSTrackingArea
запускать уведомления всякий раз, когда мышь входит или существует в своих границах:
/**
* Sets up the tracking area, for the entire bounds of the view.
*/
- (void) setUpTrackingRect {
_trackingArea = [[NSTrackingArea alloc] initWithRect:self.bounds
options:NSTrackingMouseEnteredAndExited | NSTrackingActiveAlways | NSTrackingInVisibleRect
owner:self
userInfo:nil];
[self addTrackingArea:_trackingArea];
}
/**
* Mouse entry: send TSMouseTrackingViewMouseEntered notification.
*/
- (void) mouseEntered:(NSEvent *) theEvent {
NSLog(@"Mouse Enter");
[[NSNotificationCenter defaultCenter] postNotificationName:TSMouseTrackingViewMouseEntered
object:self];
}
/**
* Mouse exit: send TSMouseTrackingViewMouseLeft notification.
*/
- (void) mouseExited:(NSEvent *) theEvent {
NSLog(@"Mouse Exit");
[[NSNotificationCenter defaultCenter] postNotificationName:TSMouseTrackingViewMouseLeft
object:self];
}
(Выдержка из моего полного кода на GitHub.)
Те NSLog
Они помогают мне в отладке: они никогда не срабатывают, несмотря на то, что мой курсор перемещается и выходит из вида без проблем.
Я просматривал документацию Apple и не могу найти ничего, что явно запрещает подобные вещи или объясняет, почему это не сработает. Это стандарт NSView
подкласс, в NSViewController
, но отображается в Центре уведомлений, а не в отдельном приложении.
Любой совет относительно того, почему это простое представление области отслеживания не работает в расширении Today, приветствуется.