Удалите пункты меню "Диктовка и специальные символы" из NSMenu

У меня странная "ошибка". Я создаю меню "Правка" для моего приложения Mac OSX. Он должен содержать копию, вставить, выбрать все и т. Д. Я решил функциональность, просто подключив соответствующие селекторы в первом ответчике к меню.

Я подключаю свой пункт меню вставки к пасте: я подключаю свой пункт меню копировать к копии:

Это прекрасно работает, и я могу копировать и вставлять, используя меню и ярлыки, связанные с ними.

Однако при подключении к копиру: селектор первого респондента внизу появляются два новых пункта меню: "Диктовки" и "Специальный символ".

Как мне их удалить? Я создаю меню в Интерфейсном Разработчике в xib-файле.

2 ответа

Решение

Решил это, вручную удалив подменю из кода:

- (void)windowDidLoad {
    [super windowDidLoad];
    [self presentModalViewController:self.bookshelfController withData:nil];

    [self removeLastMenuItemsOfRedigeraMenu];
}

-(void)removeLastMenuItemsOfRedigeraMenu
{

    NSMenu *mainMenu = [NSApp mainMenu];
    for (NSMenuItem* subMenu in mainMenu.itemArray)
    {
        if ([subMenu.title isEqualToString:@"Redigera"])
        {
            NSArray *array = subMenu.submenu.itemArray;
            for (int i = (int)array.count-1; i >= 0; i--)
            {
                if (i >= 11)
                {
                    [subMenu.submenu removeItem:[array objectAtIndex:i]];
                }
            }
        }
    }
}

Пожалуйста, напишите, если у вас есть лучший ответ

Вы можете изменить название пункта меню на любое другое, и через awakeFromNib вернуться с нужным вам именем.

Что-то вроде:

    [_editMenuItem.submenu setTitle:NSLocalizedString(@"Edit",NULL)];

Эти меню добавляются только в том случае, если заголовок "изменить" на любом из поддерживаемых языков. Но только при загрузке интерфейса (awakeFromNib) уже можно снова ввести имя.

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