3

我知道这是最常见的问题之一。事实上,我找到了下面的链接:

在 UIWebView 中禁用用户选择

但我仍然无法从菜单选择中删除副本并定义项目。我只想在菜单中显示我的“快速”和“另一个”项目。任何人都可以告诉我一种方法吗?感谢您的时间。这是我的代码和屏幕截图。

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
{


    if (action == @selector(quick:)) {

        NSLog(@"my quick view");
        return YES;

    }else if (action == @selector(another:)){

        NSLog(@"my another view");
        return YES;

    }else if (action == @selector(copy:) ||
        action == @selector(paste:)||
        action == @selector(cut:) ||
        action == @selector(define:) )
    {
        return NO;
    }

    return [super canPerformAction:action withSender:sender];

}

在此处输入图像描述

4

2 回答 2

1

首先,要解决您的问题,请更改define:_define:删除相关选项。

但是,_define:它是 Apple 私有 API 中的一个功能(因为_),如果你想在 App Store 上发布它们,你不能在你的产品中使用它们。

但是,就您的copy:选择而言,您canPerformAction应该将其删除。

仅供参考,在这里我附上了一个私有 API 函数列表, canPerformAction 将调用:

_promptForReplace:

_showTextStyleOptions:

_define:

_addShortcut:

_accessibilitySpeak:

_accessibilitySpeakLanguageSelection:

_accessibilityPauseSpeaking:

因此,如果要删除上述任何功能,则必须创建自定义菜单栏。下面的这段视频应该可以帮助您解决问题:

http://www.youtube.com/watch?v=SB7w8JEJSrc

祝你好运!

编辑:

这是您的解决方案:

-(BOOL)canPerformAction:(SEL)action withSender:(id)sender
{


if (action == @selector(quick:)) {

    NSLog(@"my quick view");
    return YES;

}else if (action == @selector(another:)){

    NSLog(@"my another view");
    return YES;

}

return NO;

}
于 2013-11-27T00:33:15.810 回答
0

尝试在这种方法中使用这个......

-(void)webViewDidFinishLoad:(UIWebView *)theWebView
{
    [webView stringByEvaluatingJavaScriptFromString:@"document.body.style.webkitTouchCallout='none'; document.body.style.KhtmlUserSelect='none'"];
}

我希望它可以帮助你...

于 2013-08-23T08:05:43.810 回答