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(程序网)
iOS webview加载html自定义选项框选词的更多相关文章
- iOS WebView 加载本地资源(图片,文件等)
https://www.cnblogs.com/dhui69/p/5596917.html iOS WebView 加载本地资源(图片,文件等) NSString *path = [[NSBundle ...
- iOS webview加载时序和缓存问题总结
iOS webView的加载时序 UIWebView加载顺序: - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSU ...
- ios webview 加载含有中文的URL网页显示白屏
1. ios中的webview加载的URL不可以含有中文,解决办法说将中文字符转码, 如下: - (NSString *)URLEncodeString { NSCharacterSet *set = ...
- 【iOS】WebView加载HTML图片大小自适应与文章自动换行
在很多App中都会使用到webview,尤其是在加载新闻内容等文章形式的数据时.因为图文混编以及不同字体格式的显示,在iOS进行编辑 和显示都是一大问题(当然,iOS中也可以用CoreText进行绘制 ...
- Android:webView加载h5网页视频,播放不了,以及横屏全屏的问题和实现自定义加载进度条的效果
1.webView加载h5网页视频,播放不了,android3.0之后要在menifest添加硬件加速的属性 android:hardwareAccelerated="true". ...
- iOS中webView加载URL需要处理特殊字符
今天在项目中遇到webView加载URL时,因为URL中有特殊字符,导致页面无法加载,而且在- (BOOL)webView:(UIWebView )webView shouldStartLoadWit ...
- iOS使用webView加载HTML网页链接简单展示
//网页视图 _webView = [[UIWebView alloc]initWithFrame:CGRectMake(0, 64, mWidth, mHeight-64)]; _webView.d ...
- WebView加载HTML图片大小自适应与文章自动换行
http://www.brighttj.com/ios/ios-webview-load-html-image-adaptive.html 在很多App中都会使用到webview,尤其是在加载新闻内容 ...
- Android WebView加载本地html并实现Java与JS交互
最近做的一个项目中,用到自定义地图,将自定义地图转换成html页面,现在需要做的是如何将本地的html加载到android中,并可以实现交互. 相关讲解: 其实webview加载资源的速度并不慢,但是 ...
随机推荐
- HDU 2196 Computer (树dp)
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=2196 给你n个点,n-1条边,然后给你每条边的权值.输出每个点能对应其他点的最远距离是多少 ...
- JAVA大数运算
java大数是个好东西,用起来方便,代码短. 代码如下: import java.util.*; import java.math.*; public class Main { public stat ...
- js ajax post提交 ie和火狐、谷歌提交的编码不一致,导致中文乱码
今天遇到一个问题找了很久发现: 使用js ajax post提交 ie和火狐.谷歌提交的编码不一致,导致中文乱码 //http://www.cnblogs.com/QGC88 $.ajax({ url ...
- Apache服务器配置默认首页文件名和网站路径
默认首页的配置: 第一种:直接修改apache服务器的配置文件./conf/httpd.conf中的DirectoryIndex,如:(项目web以index.php为首页) <IfModule ...
- mongodb索引操作
创建索引 db.table.ensureIndex({name:1}) 创建联合索引 db.table.ensureIndex({"table.name":1,"tabl ...
- 利用HTML5开发Android(7)---HTML5本地存储之Database Storage
在上一篇<HTML5本地存储之Web Storage篇>中,简单介绍了如何利用localStorage实现本地存储:实际上,除了sessionStorage和localStorage外,H ...
- c++中从一段字符串中提取数字
采用标准输入输出: 输入:12&3 34*133^3131 13031* 输出:12 3 34 133 3131 13031 思路,先将整个输入存进一个字符串,再解析字符串,这样运行速度会 ...
- DELPHI下读取与设置系统时钟
在DELPHI下读取与设置系统时钟 很多朋友都想在自己的程序中显示系统时间 这在DELPHI中十分容易 利用DateToStr(Date)及TimeToStr(Time)函数即可实现. 二者的函数原型 ...
- eclipse内存溢出报错:java.lang.OutOfMemoryError:Java heap space
今天执行了一个比較大的程序,处理的数据达到126MB数据,将数据导入数据库中,用eclipse 来訪问时候,总是出现java.lang.OutOfMemoryError:Java heap space ...
- 【SSH三大框架】Hibernate基础第二篇:编写HibernateUtil工具类优化性能
相对于上一篇中的代码编写HibernateUtil类以提高程序的执行速度 首先,仍然要写一个javabean(User.java): package cn.itcast.hibernate.domai ...