Objective c 从NSMenu中删除听写和特殊字符菜单选项
我有一个奇怪的“臭虫”。我正在为我的Mac OSX应用程序创建一个“编辑”菜单。它应包含复制、粘贴、选择等所有内容。我只需将第一响应器中的相应选择器连接到菜单,就可以解决该功能 我将“粘贴”菜单项连接到粘贴: 我将“复制”菜单项连接到“复制”: 这项工作非常好,我可以使用菜单和与之相关的快捷方式进行复制和粘贴 但是,当连接到第一响应者的copy:选择器时,底部会出现两个新的菜单选项:“听写”和“特殊字符”Objective c 从NSMenu中删除听写和特殊字符菜单选项,objective-c,macos,nsmenuitem,nsmenu,Objective C,Macos,Nsmenuitem,Nsmenu,我有一个奇怪的“臭虫”。我正在为我的Mac OSX应用程序创建一个“编辑”菜单。它应包含复制、粘贴、选择等所有内容。我只需将第一响应器中的相应选择器连接到菜单,就可以解决该功能 我将“粘贴”菜单项连接到粘贴: 我将“复制”菜单项连接到“复制”: 这项工作非常好,我可以使用菜单和与之相关的快捷方式进行复制和粘贴 但是,当连接到第一响应者的copy:选择器时,底部会出现两个新的菜单选项:“听写”和“特殊字符” 如何移除它们?我正在用xib文件在Interface Builder中创建菜单。通过手动从
如何移除它们?我正在用xib文件在Interface Builder中创建菜单。通过手动从代码中删除子菜单解决了此问题:
- (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)已经可以重新输入名称了。我不明白你的意思。我的标题从来不是“编辑”。它总是“Redigera”(瑞典语中“edit”的意思)。您建议从代码中设置editMenu会删除“听写”和“特殊字符”?@Sunkas,因为“Redigera”是瑞典语,表示“编辑”,这种行为也发生在“编辑”的翻译中。只需在xib中为“someName”重命名,并在加载正常后返回“Redigera”。例如:我的“编辑”菜单是“编辑”(葡萄牙语),如果我用这个名字打电话,就会显示“听写”和“特殊字符”。因此,我将菜单标题重命名为“someName”,并在awakeFromNib上再次更改为“Editar”。请不要删除这些菜单项。您个人可能对它们没有任何用处,但其他Mac用户希望这些菜单项可用。