Переименуйте заголовок контекстного меню по умолчанию при щелчке правой кнопкой мыши в веб-представлении для какао [Цель C] - PullRequest
0 голосов
/ 13 мая 2019

Мне нужно открыть ссылку в новой вкладке в веб-просмотре. Но при правильном щелчке контекстное меню показывает Open Link In New Window с другими меню, но не Open Link In New Tab. А при нажатии Open Link In New Window откроется новая вкладка (я включил режим вкладок). Но я не могу изменить заголовок с Open Link In New Window на Open Link In New Tab и , если я изменю заголовок, он не будет работать . Я не мог найти решение еще. Я использую webView, а не WKWebView.

Если мой вопрос дублируется, пожалуйста, отошлите меня к оригиналу.

Цель C пожалуйста ..

Редактировать: Мой код

-(NSArray *)webView:(WebView *)sender contextMenuItemsForElement:(NSDictionary *)element defaultMenuItems:(NSArray *)defaultMenuItems
{
    NSMutableArray *modifiedMenuItems=[[NSMutableArray alloc]init];
    modifiedMenuItems=[defaultMenuItems mutableCopy];
    NSMenuItem *mItem=[[NSMenuItem alloc]init];
    int i=0;
    while(i<[modifiedMenuItems count])
    {
        mItem=[modifiedMenuItems objectAtIndex:i];
        if([mItem tag]==WebMenuItemTagOpenLinkInNewWindow)
        {
            [mItem setTitle:@"Open Link in New Tab"];
            [modifiedMenuItems replaceObjectAtIndex:i withObject:mItem];
            //Here I renamed the title and replaced. But it doesn't works.
            //It is showing like a disabled one.
            //So I added the next line code prior to replacement.
            [mItem setEnabled:YES];
        }
    }
    return modifiedMenuItems;
}

Ответы [ 2 ]

1 голос
/ 15 мая 2019

[modifiedMenuItems replaceObjectAtIndex:i withObject:mItem] заменяет mItem на mItem.(NSArray *)modifiedMenuItems ничего не делает во время выполнения.Найдите предмет и установите название:

-(NSArray *)webView:(WebView *)sender contextMenuItemsForElement:(NSDictionary *)element defaultMenuItems:(NSArray *)defaultMenuItems
{
    for (NSMenuItem *mItem in defaultMenuItems)
    {
        if ([mItem tag] == WebMenuItemTagOpenLinkInNewWindow)
        {
            [mItem setTitle:@"Open Link in New Tab"];
            break;
        }
    }
    return defaultMenuItems;
}

Вот и все.Другие проблемы не вызваны переименованием элемента.

0 голосов
/ 15 мая 2019

Все дело в типе возвращаемого значения в моем случае. Я только что изменил возвращаемый массив на NSArray с NSMutableArray. Я добавлю исправленный код.

-(NSArray *)webView:(WebView *)sender contextMenuItemsForElement:(NSDictionary *)element defaultMenuItems:(NSArray *)defaultMenuItems
{
    //Here I need to rename the title of default menu from
    //"Open Link In New Window" to "Open Link In New Tab".
    NSMutableArray *modifiedMenuItems=[[NSMutableArray alloc]init];
    modifiedMenuItems=[defaultMenuItems mutableCopy];
    NSMenuItem *mItem=[[NSMenuItem alloc]init];
    int i=0;
    while(i<[modifiedMenuItems count])
    {
        mItem=[modifiedMenuItems objectAtIndex:i];
        if([mItem tag]==WebMenuItemTagOpenLinkInNewWindow)
        {
            [mItem setTitle:@"Open Link in New Tab"];
            [modifiedMenuItems replaceObjectAtIndex:i withObject:mItem];
            //Here I renamed the title and replaced. But it doesn't works.
            //It is showing like a disabled one.
            //So I added the next line code prior to replacement.
            [mItem setEnabled:YES];
        }    
        i++;
    }
    //For adding new menu item.
    //[mItem setTitle:@"Your Title"];
    //[mItem setTarget:self];
    //[mItem setAction:@selector(yourActionMethod)];
    //[mItem setTag:/*your desired enum tag value*/];
    //[mItem setEnabled:YES];
    //Then add or insert to any position you want in the modifiedMenuItems array.
    return (NSArray *)modifiedMenuItems;  //Changed the type.
}

My_Code

...