iOS 获取 WKWebView 里面图片

背景:打开的文章H5能不能点击放大图片预览 并且保存啊?

首先我们需要获取到 用户点击的范围所在的 图片
那么我们可以做一个WKWebView 来专门处理这个事情。

WKWebView (Images)
-(void) addTapImageGesture
{
    UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapGestureAction:)];
    tapGesture.numberOfTapsRequired = 1;
    tapGesture.delegate = (id)self;
    [self addGestureRecognizer:tapGesture];
}

//这里增加手势的返回,不然会被WKWebView拦截
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
    return YES;
}


-(void) tapGestureAction:(UITapGestureRecognizer *)recognizer
{
	//首先要获取用户点击在WKWebView 的范围点
    CGPoint touchPoint = [recognizer locationInView:self];
    NSString *imgURLJS = [NSString stringWithFormat:@"document.elementFromPoint(%f, %f).src", touchPoint.x, touchPoint.y];
    //跟着注入JS 获取 异步获取结果
    [self evaluateJavaScript:imgURLJS completionHandler:^(id result, NSError * _Nullable error) {
        if (error == nil)
        {
            NSString *url = result;
            if (url.length == 0)
            {
                return ;
            }
            else
            {
            //如果是url 则转换成 UIImage
                NSData *imgData = [NSData dataWithContentsOfURL:[NSURL URLWithString:url]];
                UIImage *clickImg = [UIImage imageWithData:imgData];
                if (clickImg)
                {
                    NSArray *imgArr = @[url];
                    NSMutableArray *tempArray = [[NSMutableArray alloc] init];
                    [tempArray addObject:clickImg];
                    //将图片 存起来 ,然后可以放到 预览控件里面去了
                    [self setImgUrlArrayKey:[tempArray copy]];

                   //to do 这里就可以将图片放在你想要放在的 图片预览控件里面了
                }
                
            }
        }
    }];
}

最后我们可以在 WKWebView 的 delegate 加载完成的 回调里面增加使用

- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation
{
    [self.webView addTapImageGesture];
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值