Как мне динамически настроить размер NSMenu для его содержимого? - PullRequest
3 голосов
/ 08 июля 2011

У меня есть стандартное NSMenu, подобное этому

initial menu

Это меню было создано с этим кодом:

NSMenu *menu = [[NSMenu alloc] init];

    NSMenuItem *addMenuItem = [[NSMenuItem alloc] init];
    [addMenuItem setTitle:[NSString stringWithFormat:@"Upload"]];
    [addMenuItem setHidden:NO];
    [addMenuItem setRepresentedObject:contentType];
    [addMenuItem setTarget:self];
    [addMenuItem setAction:@selector(performSelectedDragOperation:)];
    [addMenuItem setTag:operation];
    [addMenuItem setEnabled:YES];

    [menu addItem:addMenuItem];

    NSMenuItem *alterMenuItem = [addMenuItem copy];
    [alterMenuItem setTitle:@"Upload in Folder"];
    [alterMenuItem setKeyEquivalentModifierMask:NSAlternateKeyMask];
    [alterMenuItem setAlternate:YES];
    [menu addItem:alterMenuItem];
    [alterMenuItem release];

    [addMenuItem release];

    NSMenuItem *addMenuItem2 = [[NSMenuItem alloc] init];
    [addMenuItem2 setTitle:[NSString stringWithFormat:@"EditNewAndUpload"]];
    [addMenuItem2 setHidden:NO];
    [addMenuItem2 setRepresentedObject:contentType];
    [addMenuItem2 setTarget:self];
    [addMenuItem2 setAction:@selector(performSelectedDragOperation:)];
    [addMenuItem2 setTag:operation];
    [addMenuItem2 setEnabled:YES];

    [menu addItem:addMenuItem2];

    NSMenuItem *alterMenuItem2 = [addMenuItem2 copy];
    [alterMenuItem2 setTitle:@"EditNewAndUpload in Folder"];
    [alterMenuItem2 setKeyEquivalentModifierMask:NSAlternateKeyMask];
    [alterMenuItem2 setAlternate:YES];
    [menu addItem:alterMenuItem2];
    [alterMenuItem2 release];

    [addMenuItem2 release];

Как вы можете видеть, есть "дубликат »для каждой опции в меню.Эта копия элемента отображается, когда вы нажимаете клавишу option (alt), когда меню видно.

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

enter image description here

Есть идеи, как это исправить?Спасибо

Ответы [ 2 ]

2 голосов
/ 09 июля 2011

Это нормальное поведение, и вам не стоит об этом беспокоиться.Если вы хотите, чтобы это изменилось, подайте ошибку .

0 голосов
/ 06 августа 2015

Необходимо просто изменить заголовок NSMenuItem

[[appmenu itemAtIndex: 0] setTitle: [NSString stringWithFormat: @ "EditNewAndUpload \ t \ t \ t \ t \ t"]];

...