0

我有一个奇怪的“错误”。我正在为我的 Mac OSX 应用程序创建一个“编辑”菜单。它应包含复制、粘贴、全选等。I have solved the functionality by simply connecting the appropriate selectors in the first responer to the menues.

我将我的粘贴菜单项连接到粘贴:我将我的复制菜单项连接到复制:

这很好用,我可以使用与其关联的菜单和快捷方式进行复制和粘贴。

但是,当连接到第一个响应者的副本:选择器时,底部会出现两个新的菜单选项:“听写”和“特殊字符”。

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

4

2 回答 2

0

通过从代码中手动删除子菜单来解决它:

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

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

于 2013-09-18T12:18:55.323 回答
-1

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

就像是:

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

只有当标题在任何支持的语言上为“编辑”时,它才会添加这些菜单。但是就在加载界面的时候,那么(awakeFromNib)就已经可以把名字再放一遍了。

于 2013-11-11T12:49:04.457 回答