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