UIWebView之獲取所點位置的圖片(放大webView中的圖片)

- (void)viewDidLoad
{
    [super viewDidLoad];    // Do any additional setup after loading the view.
    _showWebView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 460-44)];
    NSURLRequest *urlRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://news.163.com/special/qingsongyike"]];
    [_showWebView loadRequest:urlRequest];
    [self.view addSubview:_showWebView];
    
    [self addTapOnWebView];
 }-(void)addTapOnWebView
{
    UITapGestureRecognizer* singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];
    [self.showWebView addGestureRecognizer:singleTap];
    singleTap.delegate = self;
    singleTap.cancelsTouchesInView = NO;
}#pragma mark- TapGestureRecognizer/**
 *  3.容許多個手勢識別器共同識別
 
    默認狀況下,兩個gesture recognizers不會同時識別它們的手勢,可是你能夠實現UIGestureRecognizerDelegate協議中的
    gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:方法對其進行控制。這個方法通常在一個手    勢接收者要阻止另一個手勢接收本身的消息的時候調用,若是返回YES,則兩個gesture recognizers可同時識別,若是返回NO,則     並不保證兩個gesture recognizers必不能同時識別,由於另一個gesture recognizer的此方法可能返回YES。也就是說兩個
gesture recognizers的delegate方法只要任意一個返回YES,則這兩個就能夠同時識別;只有兩個都返回NO的時候,纔是互斥的。默認狀況下是返回NO。
 *  若是不寫這句話,會致使本身建立的手勢不會響應事件,由於webView裏的子控件自帶不少手勢。
 *  @param gestureRecognizer      手勢
 *  @param otherGestureRecognizer 其餘手勢
 *
 *  @return YES表明能夠多個手勢同時識別,默認是NO,不能夠多個手勢同時識別 */- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{    return YES;
}-(void)handleSingleTap:(UITapGestureRecognizer *)sender
{
    CGPoint pt = [sender locationInView:self.showWebView];
    NSString *imgURL = [NSString stringWithFormat:@"document.elementFromPoint(%f, %f).src", pt.x, pt.y];
    NSString *urlToSave = [self.showWebView stringByEvaluatingJavaScriptFromString:imgURL];
    NSLog(@"image url=%@", urlToSave);    if (urlToSave.length > 0) {
        [self showImageURL:urlToSave point:pt];
    }
}//呈現圖片-(void)showImageURL:(NSString *)url point:(CGPoint)point
{
    UIImageView *showView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 470)];
    showView.center = point;
    [UIView animateWithDuration:0.5f animations:^{
        CGPoint newPoint = self.view.center;
        newPoint.y += 20;
        showView.center = newPoint;
    }];
    
    showView.backgroundColor = [UIColor blackColor];
    showView.alpha = 0.9;
    showView.userInteractionEnabled = YES;      
    [self.view addSubview:showView];
    [showView setImageWithURL:[NSURL URLWithString:url]];
    
    UITapGestureRecognizer* singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleViewTap:)];
    [showView addGestureRecognizer:singleTap];
    
    [self.navigationController setNavigationBarHidden:YES animated:YES];
}//移除圖片查看視圖-(void)handleSingleViewTap:(UITapGestureRecognizer *)sender
{    
    for (id obj in self.view.subviews) {        if ([obj isKindOfClass:[UIImageView class]]) {
            [obj removeFromSuperview];
        }
    }
    [self.navigationController setNavigationBarHidden:NO animated:YES];
}
相關文章
相關標籤/搜索