NSTrackingArea в расширении Today не предоставляет событий

Я работаю над расширением Today для Mac, которое должно управлять iTunes. Это работает и все, но мой пользовательский интерфейс состоит из квадратного изображения обложки, наложенного на эффекты, которые содержат метаданные и элементы управления:

Derp

Теперь, очевидно, было бы неплохо, если бы я мог как-то заставить их появляться только тогда, когда мне было нужно - скажем, когда курсор мыши был выше вида моего расширения.

Поскольку я имел дело с такими вещами раньше, я решил собрать немного 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, приветствуется.

0 ответов

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