UIWebView禁用长按弹出copy选择框

本文参考http://bbs.9ria.com/thread-227539-1-1.html  感谢hbnana大神

第一种加载html文件

再webview的加载完成的代理方法中添加一下代码

//禁止长按弹出图片的地址等

[self.webView stringByEvaluatingJavaScriptFromString:@"document.body.style.webkitTouchCallout=‘none‘;"];

//禁止长按复制

[self.webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.style.webkitUserSelect=‘none‘;"];

第二种加载pdf文件

第二种情况:如果UIWebView加载的是PDF文档,请参阅下贴
用uiwebview加载pdf应该是iOS里面最方便的浏览pdf的方式了。
但是可能有的客户会考虑到安全问题,要求禁止开启webview上面的
长按出现的复制文本或图片的功能。我的上一个项目客户就有这样的要求,
为了实现这个功能,我确实研究了一段时间。最终找到一个非常简单的实现
方法,只需多加几行代码即可。
今天拿出来和大家分享,能给正在纠结这问题的朋友们提供一些帮助那么最好了,
如果有熟悉这个功能的大牛们有更好的实现方法,也欢迎多多执教啦。。。。

  1. NSString *path = [[NSBundle mainBundle] pathForResource:@"sample" ofType:@"pdf"];
  2. NSURLRequest* pdfRequest = [NSURLRequest requestWithURL:[NSURL fileURLWithPath:path]];
  3. [self.pdfView loadRequest:pdfRequest];
  4. //在viewdidload或适当的地方创建一个自定义的长按手势
  5. UILongPressGestureRecognizer *longPress = [[[UILongPressGestureRecognizer alloc] initWithTarget:self action:nil] autorelease];
  6. longPress.delegate = self; //记得在.h文件里加上<UIGestureRecognizerDelegate>委托
  7. longPress.minimumPressDuration = 0.4; //这里为什么要设置0.4,因为只要大于0.5就无效,我像大概是因为默认的跳出放大镜的手势的长按时间是0.5秒,
  8. //如果我们自定义的手势大于或小于0.5秒的话就来不及替换他的默认手势了,这是只是我的猜测。但是最好大于0.2
  9. //秒,因为有的pdf有一些书签跳转功能,这个值太小的话可能会使这些功能失效。
  10. [self.pdfView addGestureRecognizer:longPress];
  11. //接下来就是实现一个委托了
  12. #pragma mark - GestureRecognizerDelegate
  13. - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
  14. {
  15. return NO; //这里一定要return NO,至于为什么大家去看看这个方法的文档吧。
  16. //还有就是这个委托在你长按的时候会被多次调用,大家可以用nslog输出gestureRecognizer和otherGestureRecognizer
  17. //看看都是些什么东西。
  18. }
时间: 2024-10-19 16:31:02

UIWebView禁用长按弹出copy选择框的相关文章

点击事件中实现弹出一个选择框(如选择网络设置、选择电话短信联系方式)

1.网络设置 public void checkNetwork(){ //获取连接的管理对象 ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); //获取当前正在使用的网络 NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo(); //判断网络是

SpringMVC中导出Excel文件,关于弹出一个选择框,选择导出Excel文件的路径项目细节

最近项目上需要写一个导出excel功能,在开始的时候用ajax发送请求,不弹出导出路径选择框,后来在网上搜了一些资料,找到了问题所在,做一下总结: 前端页面:thymeleaf 后端语言:java 导出Excel:POI模式 1.ajax请求只是个“字符型”的请求,即请求的内容是以文本类型存放的.文件的下载是以二进制形式进行的,ajax没法解析后台返回的文件流,所以无法处理二进制流response输出来下载文件.将ajax请求改为loaction.href的形式发送请求,浏览器是可以识别二进制的

更改bootstrap-datetimepicker弹出日期选择框只能在下方的限制

城市监控的项目,网页调用监控摄像头,并需要replay的日期和时间选择calendar.找了半天,找到一个好东东~~~~bootstrap-datetimepicker, UI也很有型的范,就用它吧~~, 一切顺利,就是这个calendar的弹出框只能在下方,而我需要嵌套在摄像头监控屏幕下的工具条上,如果弹出框在下方就太离谱了,最后决定改,哈就成就今天这个calendar啦,自我感觉效果不错,晒出来装一下B~~~~哈 更改的bootstrap-datetimepicker.js /** * @l

android 弹出日期选择框

DatePickerDialog 在很多时候需要用户去设定时间,不可能让用户去在一个文本框中去输入时间,所以就需要有个日期弹出选择框,而这个框就是DatePickerDialog. 1.在API中的DatePickerDialog类的继承关系 从类的继承关系来看DatePickerDialog继承于Dialog就可以明显看出是一个弹出框了 2.构造函数 callBack:是在你设置时间的时候触发的. year , monthOfYear , dayOfMonth这三个参数是用来初始化DatePi

js点击某个图标或按钮弹出文件选择框

<HTML> <head> <script type="text/javascript" src="script/jquery-1.6.2.min.js"></script> <script type='text/javascript'> function selectFile(){ //触发 文件选择的click事件 $("#file").trigger("click&quo

UIWebView长按弹出菜单显示英文解决办法

UIWebView加载网页后,长按弹出菜单,显示如下英文菜单样式: 在Info.plist中添加CFBundleLocalizations字段,并增加zh_CN元素,即可将上述菜单显示为中文. UIWebView长按弹出菜单显示英文解决办法

Android ListView两种长按弹出菜单方式

* 知识点1:ListView item:两种长按弹出菜单方式* 知识点2:ListView SimpleAdapter的使用*  知识点 3:在java代码中创建一个ListView*/ -----------------------------------------------------Activity[mw_shl_code=java,true]package org.gxl.com; public class ListOnLongClickActivity extends Activ

ListView的使用(二)长按弹出上下文菜单

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.list); mDbHelper = new DiaryDbAdapter(this); mDbHelper.open(); renderListView(); ListView mylistView = getListView(); mylistView.setOnCreate

iOS开发——UI篇&amp;下拉弹出列表选择项效果

下拉弹出列表选择项效果 右边菜单中的按键,点击弹出一个列表可选择,选择其中一个,响应相应的事件并把文字显示在右边的菜单上:弹出下拉效果使用LMDropdownView插件,可以用POD进行加载pod ‘LMDropdownView’:LMDropdownView是把想要的视图赋给它: 源代码地址:https://github.com/JxbSir/YiYuanYunGou 效果如下: 1:在主页面先定义按键跟绑定视图(没写全的都是属性中定义了比如btnRigth,dropdownView等):