UIWebView获取所点位置图片URL教程是本文要介绍的内容,UIWebView有自己的UIResgure,如果我们手动加入自己的GestureRecognize将不能识别,如UILongPressGestureRecongnizer. 在浏览网页的时候,如果看到喜欢的图片,想把它保存下来如何办呢? 我们可以自己写一个程序来实现,用uiwebview开发一个自己的浏览器。
关于说到uiwebview不能识别long press gesture,幸好有一个可以识别,那就是double click.因此我们注册它,代码如下:
- UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doubleTap:)];
- doubleTap.numberOfTouchesRequired = 2;
- [self.theWebView addGestureRecognizer:doubleTap];
- UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doubleTap:)];
- doubleTap.numberOfTouchesRequired = 2;
- [self.theWebView addGestureRecognizer:doubleTap];
然后就是实现doubleTap:
- -(void) doubleTap :(UITapGestureRecognizer*) sender
- {
- // <Find HTML tag which was clicked by user>
- // <If tag is IMG, then get image URL and start saving>
- int scrollPositionY = [[self.theWebView stringByEvaluatingJavaScriptFromString:@"window.pageYOffset"] intValue];
- int scrollPositionX = [[self.theWebView stringByEvaluatingJavaScriptFromString:@"window.pageXOffset"] intValue];
- int displayWidth = [[self.theWebView stringByEvaluatingJavaScriptFromString:@"window.outerWidth"] intValue];
- CGFloat scale = theWebView.frame.size.width / displayWidth;
- CGPoint pt = [sender locationInView:self.theWebView];
- pt.x *= scale;
- pt.y *= scale;
- pt.x += scrollPositionX;
- pt.y += scrollPositionY;
- NSString *js = [NSString stringWithFormat:@"document.elementFromPoint(%f, %f).tagName", pt.x, pt.y];
- NSString * tagName = [self.theWebView stringByEvaluatingJavaScriptFromString:js];
- if ([tagName isEqualToString:@"img"]) {
- NSString *imgURL = [NSString stringWithFormat:@"document.elementFromPoint(%f, %f).src", pt.x, pt.y];
- NSString *urlToSave = [self.theWebView stringByEvaluatingJavaScriptFromString:imgURL];
- NSLog(@"image url=%@", urlToSave);
- }
- }