Пользовательское представление в NSMenuItem отключает выбор NSPopUpButton - PullRequest
2 голосов
/ 13 января 2012

Я хочу настроить NSPopUpButton, поэтому я реализовал CustomMenuItemView, который сейчас имеет только следующий код (для целей тестирования):

- (void)drawRect:(NSRect)dirtyRect
{
    [[NSColor redColor] set];
    NSRectFill(dirtyRect);
}

Теперь, для каждого NSMenuItem, который я добавляю к NSMenu в myPopUpButton.menu, я устанавливаю свой собственный вид:

NSMenuItem *menuItem = [[NSMenuItem alloc] initWithTitle:@"Some title" action:NULL keyEquivalent:@""];
menuItem.view = [[CustomMenuItemView alloc] initWithFrame:NSMakeRect(0, 0, 100, 25)];

Когда я запускаю свою программу и открываю всплывающую кнопку, выбор пункта меню кажется отключенным (то есть, когда я нажимаю на него, ничего не происходит).

Я предполагаю, что он на самом деле не отключен; он просто больше не реагирует на события. Нужно ли мне добавлять обработку событий в моем собственном представлении? Если да, то как?

1 Ответ

8 голосов
/ 17 января 2012

Я решил проблему, добавив метод mouseUp к своему CustomMenuItemView:

- (void)mouseUp:(NSEvent*) event
{
    NSMenu *menu = self.enclosingMenuItem.menu;
    [menu cancelTracking];
    [menu performActionForItemAtIndex:[menu indexOfItem:self.enclosingMenuItem]];
}
...