UIWebView不响应点击事件,需要加上手势识别。
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapAction:)];
tap.delegate = self;
tap.cancelsTouchesInView = NO;
[self.webView addGestureRecognizer:tap];
#pragma mark - UIGesture Recoginzer
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
return YES;
}
这样,webview就能响应点击事件了。在响应方法中获取图片的URL:
#pragma mark - 点击webview的图片,触发方法
- (void)tapAction:(UITapGestureRecognizer *)sender
{
CGPoint pt = [sender locationInView:self.webView];
NSString *imgURL = [NSString stringWithFormat:@"document.elementFromPoint(%f, %f).src", pt.x, pt.y];
NSString *urlToSave = [_webView stringByEvaluatingJavaScriptFromString:imgURL];
NSLog(@"image url=%@", urlToSave);
if (urlToSave.length > 0) {
[self showImageURL:urlToSave point:pt];
}
}
在showImage:point方法中实现大图浏览,选用 MWPhotoBrowser开源类,github下载地址:点击打开链接
定义全局变量MWPhoto *_photo:
#pragma mark - 图片的显示
- (void)showImageURL:(NSString *)url point:(CGPoint)point
{
// 图片
_photo = [MWPhoto photoWithURL:[NSURL URLWithString:url]];
MWPhotoBrowser *photoBrowser = [[MWPhotoBrowser alloc]initWithDelegate:self];
photoBrowser.displayActionButton = YES;
photoBrowser.enableSwipeToDismiss = YES;
UINavigationController *nc = [[UINavigationController alloc] initWithRootViewController:_photoBrowser];
nc.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self presentViewController:nc animated:YES completion:nil];
}
#pragma mark - MWPhotoBrowserDelegate
- (NSUInteger)numberOfPhotosInPhotoBrowser:(MWPhotoBrowser *)photoBrowser
{
return 1; // 每次浏览1张图片
}
- (id<MWPhoto>)photoBrowser:(MWPhotoBrowser *)photoBrowser photoAtIndex:(NSUInteger)index
{
return _photo;
}