iphone - 无法禁用 UIWebView 中的复制/定义选择菜单

标签 iphone ios cocoa-touch

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

Disabling user selection in 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];

}

enter image description here

最佳答案

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

但是,_define:是Apple私有(private)API中的一个函数(因为_),如果你想在应用商店。

但是,根据您的 copy: 选项,您的 canPerformAction 应该删除它。

仅供引用,我在这里附上了私有(private) 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;

}

关于iphone - 无法禁用 UIWebView 中的复制/定义选择菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18397663/

相关文章:

iphone - ASIHTTPRequest,EXC_BAD_ACCESS 当请求完成时

ios - UITableViewCell 高度自动不调整大小

objective-c - UITableViewCell 中的可编辑文本字段

iphone - 监听来自UIWebView的所有请求

iphone - 将顶点数组和面索引加载到 OpenGL-ES 中的最快方法?

iphone - 如何在出现键盘时禁用背景

iphone - 当前位置更新在 iphone 设备中不起作用

ios - ionic 电容器 - 推送通知在 iOS 上不发出声音

iphone - UILabel 和 UIView 在 vi​​ewDidAppear 上返回大小 (0, 0)

objective-c - (嵌套的)自动释放池的范围是什么?