zoukankan      html  css  js  c++  java
  • iOS webview加载html自定义选项框选词

    项目要求:webview加载html网址,内容为英文文本,需要获取文本上的单词

    这个是最终效果图:

    思路是先实现自定义的选项框(不带系统选项)再获取到滑选的单词;

    实现的步骤:

    首先是替换掉系统长按出现的复制选项框,因为长按会触发系统自带的选择复制选项(另外iOS系统在第一次长按选词时不会弹出选项框,这个注意一下就好),这里是只显示自己需要的选项(项目中是"标记"和"字典");

    在视图控制器中添加UIMenuController自定义项

    UIMenuItem *flag1 = [[UIMenuItem alloc] initWithTitle:@"标记" action:@selector(biaoji:)];
    UIMenuItem *flag2 = [[UIMenuItem alloc] initWithTitle:@"字典" action:@selector(zidian:)];
    UIMenuController *menu = [UIMenuController sharedMenuController];
    [menu setMenuItems:[NSArray arrayWithObjects:flag1,flag2, nil]];

    创建一个继承自webview的CustomView,作为控制器中webview的父类,初始化CustomView,添加自定义选项方法:

    -(BOOL)canPerformAction:(SEL)action withSender:(id)sender{
        
        if(action == @selector(biaoji:) || action == @selector(zidian:)){
            
            return YES;
            
        }
    //   return [super canPerformAction:action withSender:sender]//加上这句会返回系统的选项
        return NO;
    }

    :如果返回不是NO,而是return [super canPerformAction:action withSender:sender]这个的话,选项框会带上系统的选项而把"标记"和"字典"排在后面

    再在CustomView中实现UIMenuController的两个选项方法:

    -(void)biaoji:(UILongPressGestureRecognizer *)gesture
    {
        NSLog(@"222menuView方法-标记重难点");
        
        NSString* selection = [self stringByEvaluatingJavaScriptFromString:@"window.getSelection().toString()"];
        NSLog(@"打印选中的词=%@",selection);
    }
    -(void)zidian:(UILongPressGestureRecognizer *)gesture
    {
        NSLog(@"222menuView方法-查字典");
    }

    [self stringByEvaluatingJavaScriptFromString:@"window.getSelection().toString()"]这个是在点击自定义选项后获取到已滑动选的词,这样就可以了,比较简单。

    参考网址:

    http://jingyan.baidu.com/article/ac6a9a5e7d3e282b653eac1b.html(百度知道)
    www.itstrike.cn/Question/b0d4ca24-d5bd-4d12-a3be-cdeae9eba5b9.html(程序网)
     
  • 相关阅读:
    Matlab中将数据保存为txt或dat格式四种方案
    jeecg项目能启动显示登录页面,但是登录失败,报如下错误
    回转体CAD模型的厚度测量
    安装 PostgreSQL 时出错:Warning:Problem running post-install step
    TensorFlow 张量变换
    RNNCell、LSTMCell、tf.nn.static_rnn、tf.nn.static_bidirectional_rnn和tf.nn.bidirectional_dynamic_rnn
    layers.MaxPooling1D
    tf.squeeze
    tf.layers.Conv1D,1维卷积层
    tf.keras.layers.TimeDistributed,将一个layer应用到sample的每个时序步
  • 原文地址:https://www.cnblogs.com/wusang/p/5757411.html
Copyright © 2011-2022 走看看