iOS开发中的UIWebView的一些技巧1
2015-06-20 09:39
417 查看
很久没写博客了,今天终于闲来有时间,总结下这段时间遇到的UIWebView上的一些小技术问题。UIWebView是iOS sdk中一个最常用的控件。是内置的浏览器控件,我们可以用它来浏览网页、打开文档等等。但有时我们会遇到一个问题,就是如何实现点击webView加载的图片以放大浏览,这其中就要用到JavaScript脚本语言,这里要想进行Objective-C与JavaScript的交互操作,就需要使用oc中的
stringByEvaluatingJavaScriptFromString:方法,它的功能非常的强大,用起来非常简单,通过它我们可以很方便的操作uiwebview中的页面元素。
如何获得加载的网页内容里的图片网址呢,这里的主要代码是:
1.先给webView添加轻拍手势:
2.设置UIGestureRecognizerDelegate代理后实现下面的方法,这个方法the default implementation returns NO,一般在一个手势接收者要阻止另外一个手势接收自己的消息的时候调用:
询问delegate,两个手势是否同时接收消息,返回YES同时接收。返回NO,不同时接收。
3.实现点击webView里网页内容里的图片获取图片网址:
这里注意使用到了网页脚本语言JavaScript,通过它我们可以很轻松的实现对网页内容的操作。
4.获得网址后,就是创建一个UIScrollView并将网址传进去以显示在scrollView上面了:
具体的实现效果就是:
stringByEvaluatingJavaScriptFromString:方法,它的功能非常的强大,用起来非常简单,通过它我们可以很方便的操作uiwebview中的页面元素。
如何获得加载的网页内容里的图片网址呢,这里的主要代码是:
1.先给webView添加轻拍手势:
- (void)addTapOnWebView { UITapGestureRecognizer* singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)]; [self.contentWebV addGestureRecognizer:singleTap]; singleTap.delegate = self; }
2.设置UIGestureRecognizerDelegate代理后实现下面的方法,这个方法the default implementation returns NO,一般在一个手势接收者要阻止另外一个手势接收自己的消息的时候调用:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { return YES; }
询问delegate,两个手势是否同时接收消息,返回YES同时接收。返回NO,不同时接收。
3.实现点击webView里网页内容里的图片获取图片网址:
-(void)handleSingleTap:(UITapGestureRecognizer *)sender { CGPoint pt = [sender locationInView:self.contentWebV]; NSString *imgURL = [NSString stringWithFormat:@"document.elementFromPoint(%f, %f).src", pt.x, pt.y]; NSString *urlToSave = [self.contentWebV stringByEvaluatingJavaScriptFromString:imgURL]; NSLog(@"image url=%@", urlToSave); if (urlToSave.length > 0) { [self showImageURL:urlToSave point:pt]; } }
这里注意使用到了网页脚本语言JavaScript,通过它我们可以很轻松的实现对网页内容的操作。
4.获得网址后,就是创建一个UIScrollView并将网址传进去以显示在scrollView上面了:
//呈现图片 - (void)showImageURL:(NSString *)url point:(CGPoint)point { ImageScrollViewController *imgScrollVC = [[ImageScrollViewController alloc] init]; imgScrollVC.imgUrl = url; [self.view.window.rootViewController presentViewController:imgScrollVC animated:NO completion:nil]; }
具体的实现效果就是:
相关文章推荐
- Objective-C----NSDictionary、NSMutableDictionary
- Swift 基础
- Android源码大放送之material design类型
- Objective-C----NSArray、NSMutableArray
- VS community 2013 安装配置Xamarin
- Cocos2d-x 3.0开发(三)点击交互的四种处理
- android-studio-bundle-141.1980579-windows download Site
- 关于含有微信分享的应用发布包的签名问题
- Android中关于字符串的拆分与组合
- [玩玩Objective-C]之类和对象
- 《Android进阶》之第六篇 Fragment 的使用2
- 关于京东自适应手机端的分析
- cocos 帧率测试
- Android(java)学习笔记113:Android编写代码调用Vibrator震动功能(Bug:按下按钮button始终没有震动)
- SQLite.swift Documentation
- iOS 视图生命周期
- Android 将自己的Launcher设置为默认启动
- IOS开发中(null)与<null>的处理
- 初来乍到,求大神轻点,刚自学android,写个打电话和发短信的小DEMO吧
- iOS 应用生命周期