在我的应用程序,我有一个web视图,并且想打开一个网页加载在一个单独的视图控制器,它是精细的图像,我需要做的就是将URL到图像的来源和不同视图中的加载控制器,我可以做的。
下面是我用得到的URL图像的源代码。
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
if ([gestureRecognizer isKindOfClass:[UITapGestureRecognizer class]]) {
CGPoint touchPoint = [touch locationInView:self.view];
NSString *imageSRC = [NSString stringWithFormat:@"document.elementFromPoint(%f, %f).src", touchPoint.x, touchPoint.y];
NSString *srcOfImage = [webView stringByEvaluatingJavaScriptFromString:imageSRC];
NSLog(@"src:%@",srcOfImage);
}
return YES;
}
现在,我的问题是,有时,当图像可能与它的链接(即标签),而像我单独视图控制器打开网页视图将加载链接。 我想这样做的是,从打开(如果存在)的链接(只有那些在图像)停止web视图。 任何指针,以我怎么可能去实现呢?
最后想通了,答案在UIWebViewDelegate撒谎。 对于任何人谁是有兴趣的,这里是我如何解决它..
bool isImage;
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
if ([gestureRecognizer isKindOfClass:[UITapGestureRecognizer class]]) {
CGPoint touchPoint = [touch locationInView:self.view];
NSString *imageSRC = [NSString stringWithFormat:@"document.elementFromPoint(%f, %f).src", touchPoint.x, touchPoint.y];
NSString *srcOfImage = [webView stringByEvaluatingJavaScriptFromString:imageSRC];
NSLog(@"src:%@",srcOfImage);
NSURL *imgsrcURL = [NSURL URLWithString:srcOfImage];
if (imgsrcURL && imgsrcURL.scheme && imgsrcURL.host) {
isImage = TRUE;
}
}
return YES;
}
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
if ((navigationType == UIWebViewNavigationTypeLinkClicked) && (isImage)) {
return NO;
isImage = FALSE;
} else {
return YES;
}
}