webView与APP

iOS 获取UIWebView的H5页面中的图片地址

2018-11-19  本文已影响0人  Cary9396

现在许多APP都有H5网页,那么如果我们需要得到H5中的某些图片予以保存、收藏或者识别二维码等操作应当如何完成呢 ,以UIWebView为例:
首先,创建一个UIWebView显示网页:

    _webView  = [[UIWebView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
    _webView.scalesPageToFit =YES;
    _webView.backgroundColor = [UIColor clearColor];
    [_webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"https://weibo.com"]]];
    [self.view addSubview:_webView];

给UIWebView加上长按手势:

UILongPressGestureRecognizer *longPressed = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressed:)];
    longPressed.delegate = self;
    [self.webView addGestureRecognizer:longPressed];

实现delegate方法:

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
    return YES;
}

实现手势事件方法:

- (void)longPressed:(UITapGestureRecognizer*)recognizer
{
    
   if (recognizer.state != UIGestureRecognizerStateBegan) {
        return;
    }
    CGPoint touchPoint = [recognizer locationInView:self.webView];
    NSString *js = [NSString stringWithFormat:@"document.elementFromPoint(%f, %f).src", touchPoint.x, touchPoint.y];
    NSString *imageUrl = [self.webView stringByEvaluatingJavaScriptFromString:js];
    if (imageUrl.length == 0) {
        return;
    }
    NSLog(@"image url:%@",imageUrl);
    NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:imageUrl]];

    UIImage *image = [UIImage imageWithData:data];
    if (image) {

        UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"" message:@"请选择" preferredStyle:UIAlertControllerStyleActionSheet];
        
        UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
            
        }];
        UIAlertAction *saveAction = [UIAlertAction actionWithTitle:@"保存图片" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
            //保存图片操作
        }];
        UIAlertAction *CollectionAction = [UIAlertAction actionWithTitle:@"识别图中二维码" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
            //识别二维码操作
        }];
        
        [alert addAction:cancelAction];
        [alert addAction:saveAction];
        [alert addAction:CollectionAction];
        
        [self presentViewController:alert animated:YES completion:nil];
    }
    
}

自此已拿到H5页面中你所需要的图片地址,可进行你需要的后续操作。

上一篇 下一篇

猜你喜欢

热点阅读