UIWebview点击图片实现大图浏览

UIWebView不响应点击事件,需要加上手势识别。

    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapAction:)];
    tap.delegate = self;
    tap.cancelsTouchesInView = NO;
    [self.webView addGestureRecognizer:tap];


还需实现 UIGestureRecognizerDelegate:

#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];
}


 实现MWPhotoBrowserDelegate 

#pragma mark - MWPhotoBrowserDelegate
- (NSUInteger)numberOfPhotosInPhotoBrowser:(MWPhotoBrowser *)photoBrowser
{
    return 1;  // 每次浏览1张图片
}

- (id<MWPhoto>)photoBrowser:(MWPhotoBrowser *)photoBrowser photoAtIndex:(NSUInteger)index
{
    
    return _photo;
}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值