从NSMenu中删除听写和特殊字符菜单选项

时间:2013-09-18 11:25:26

标签: objective-c macos nsmenuitem nsmenu

我有一个奇怪的“错误”。我正在为我的Mac OSX应用程序创建一个“编辑”菜单。它应包含复制,粘贴,全选等。我已经通过简单地将第一个响应者中的适当选择器连接到菜单来解决了这个功能。

我将粘贴menuitem连接到粘贴: 我将我的副本menuutem连接到copy:

这项工作非常棒,我可以使用菜单和与之关联的快捷方式进行复制和粘贴。

但是,当连接到第一个响应者的副本:选择器时,底部会出现两个新的菜单选项:“Dictations”和“Special Character”。

如何删除它们?我正在使用xib文件在Interface Builder中创建菜单。

2 个答案:

答案 0 :(得分:1)

通过手动删除代码中的子菜单解决了这个问题:

- (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]];
                }
            }
        }
    }
}

如果您有更好的答案,请发布

答案 1 :(得分:0)

您可以将菜单项的名称更改为任何其他名称,并通过awakeFromNib将其更改为您想要的名称。

类似的东西:

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

只有在任何支持的语言上标题为“编辑”时,才会添加这些菜单。但只是在加载界面时,(awakeFromNib)已经可以再次输入名称。