iOS WKWebView加載HTML,點擊獲取圖片鏈接

我們給WKWebView添加一個類別: category 并起名為 Images

.h

#import <WebKit/WebKit.h>

NS_ASSUME_NONNULL_BEGIN

@interface WKWebView (Images)

-(void) addTapImageGesture;

@end

NS_ASSUME_NONNULL_END

.m

#import "WKWebView+Images.h"


@implementation 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]];
                
                NSLog(@"dddddd = %@", url);
                
                UIImage *clickImg = [UIImage imageWithData:imgData];
                if (clickImg)
                {
                    NSArray *imgArr = @[url];
                    NSMutableArray *tempArray = [[NSMutableArray alloc] init];
                    [tempArray addObject:clickImg];
  
                //TO對圖片的操作               

                }
                
            }
        }
    }];
}


@end
調用,在加載完成的代理方法中進行調用:
- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation
{
    [self.webView addTapImageGesture];
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。