项目要求: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(程序网)
 

iOS webview加载html自定义选项框选词的更多相关文章

  1. iOS WebView 加载本地资源(图片,文件等)

    https://www.cnblogs.com/dhui69/p/5596917.html iOS WebView 加载本地资源(图片,文件等) NSString *path = [[NSBundle ...

  2. iOS webview加载时序和缓存问题总结

    iOS webView的加载时序 UIWebView加载顺序: - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSU ...

  3. ios webview 加载含有中文的URL网页显示白屏

    1. ios中的webview加载的URL不可以含有中文,解决办法说将中文字符转码, 如下: - (NSString *)URLEncodeString { NSCharacterSet *set = ...

  4. 【iOS】WebView加载HTML图片大小自适应与文章自动换行

    在很多App中都会使用到webview,尤其是在加载新闻内容等文章形式的数据时.因为图文混编以及不同字体格式的显示,在iOS进行编辑 和显示都是一大问题(当然,iOS中也可以用CoreText进行绘制 ...

  5. Android:webView加载h5网页视频,播放不了,以及横屏全屏的问题和实现自定义加载进度条的效果

    1.webView加载h5网页视频,播放不了,android3.0之后要在menifest添加硬件加速的属性 android:hardwareAccelerated="true". ...

  6. iOS中webView加载URL需要处理特殊字符

    今天在项目中遇到webView加载URL时,因为URL中有特殊字符,导致页面无法加载,而且在- (BOOL)webView:(UIWebView )webView shouldStartLoadWit ...

  7. iOS使用webView加载HTML网页链接简单展示

    //网页视图 _webView = [[UIWebView alloc]initWithFrame:CGRectMake(0, 64, mWidth, mHeight-64)]; _webView.d ...

  8. WebView加载HTML图片大小自适应与文章自动换行

    http://www.brighttj.com/ios/ios-webview-load-html-image-adaptive.html 在很多App中都会使用到webview,尤其是在加载新闻内容 ...

  9. Android WebView加载本地html并实现Java与JS交互

    最近做的一个项目中,用到自定义地图,将自定义地图转换成html页面,现在需要做的是如何将本地的html加载到android中,并可以实现交互. 相关讲解: 其实webview加载资源的速度并不慢,但是 ...

随机推荐

  1. 使用Map List 封装json数据

    <dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</art ...

  2. 【PAT】1020. Tree Traversals (25)

    Suppose that all the keys in a binary tree are distinct positive integers. Given the postorder and i ...

  3. C# 运用params修饰符来实现变长参数传递

    一般来说,参数个数都是固定的,定义为集群类型的参数可以实现可变数目参数的目的,但是.NET提供了更灵活的机制来实现可变数目参数,这就是使用params修饰符.可变数目参数的好处就是在某些情况下可以方便 ...

  4. 如何在微博侧栏中加入自己的微博[js]

    <div class="box"> <ul> <li> <object classid="clsid:D27CDB6E-AE6D ...

  5. Spring使用Cache、整合Ehcache

    http://haohaoxuexi.iteye.com/blog/2123030 Spring使用Cache 从3.1开始,Spring引入了对Cache的支持.其使用方法和原理都类似于Spring ...

  6. uva539 The Settlers of Catan

    The Settlers of Catan Within Settlers of Catan, the 1995 German game of the year, players attempt to ...

  7. addClass 函数

    javascript: function addClass(id,new_class){ var i,n=0; new_class=new_class.split(","); fo ...

  8. C# 操作数据库就的那点代码

    操作数据库的那点代码,别在费劲每个数据库都写一遍SQLHelper,SQLiteHelper,OleDbHelper,了,这里都有了. 接口不发了,自己抽取定义就行了. public abstract ...

  9. iframe式ajax调用示例

    1.新建 a.html <!doctype html> <html> <head> <meta charset='utf-8'> <title&g ...

  10. winForm 程序开发界面参数传递

    1. using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; u ...