Представление NSMenuItem (экземпляр подкласса NSView) не выделяется при наведении - PullRequest
3 голосов
/ 27 мая 2010

Мне нужно использовать пользовательский подкласс NSView для рисования некоторого контента, но он не рисуется так, как подсвечивается, когда пользователь наводит курсор, и не отклоняет NSMenu, когда пользователь нажимает на него. Есть идеи?

Редактировать

Таким образом, используя -drawRect: и [[self enclosingMenuItem] isHighlighted], я могу сказать, нужно ли мне рисовать вид, как выделено, и мне предоставляется возможность сделать это. Все, что мне нужно выяснить, это как это сделать.

Ответы [ 2 ]

5 голосов
/ 30 мая 2010

Может быть, вам стоит попробовать это так:

#define menuItem ([self enclosingMenuItem])

- (void) drawRect: (NSRect) rect {
    BOOL isHighlighted = [menuItem isHighlighted];
    if (isHighlighted) {
        [[NSColor selectedMenuItemColor] set];
        [NSBezierPath fillRect:rect];
    } else {
        [super drawRect: rect];
    }
}
1 голос
/ 27 мая 2010

Я не уверен, что понял ваш вопрос. Я думаю, что вы имеете в виду следующее: Меню открылось, и все ваши рисунки перестали рисовать. Я думаю, что это потому, что открытое NSMenu останавливает UI 'NSRunLoop своей нити. Один из обоих. Вы должны попытаться сделать ваш рисунок безопасным для потока в другой теме.

...