Удалите пункты меню "Диктовка и специальные символы" из 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) уже можно снова ввести имя.