我有一个视图控制器,我正在拦截它管理的网页视图中的链接。
我的主视图控制器有这种方法。
- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType
{
//I can see this request come in upon a touch
NSURL *url = request.URL;
NSString *urlString = url.absoluteString;
NSLog(@"raw: %@", urlString);
//do some stuff (like figure out what capturedFilename is)
ExplainViewController *explanation = [[ExplainViewController alloc] initWithNibName:@"ExplainViewController" bundle:nil file:capturedFilename];
[self.navigationController presentModalViewController:explanation animated:YES];
}
这会正确加载模态视图 ExplainViewController本身就有一个webView。 当用户触摸ExplainViewConroller中的链接时,我也想处理该请求(并提供另一个模态视图)。
ExplainViewController有这个,但我没有从任何一种方法(以下也不是前一种)获得日志活动:
- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType
{
NSURL *url = request.URL;
NSString *urlString = url.absoluteString;
NSLog(@"raw: %@", urlString);
}
我想知道此链接触摸请求的位置以及我如何拦截它。
两个提到的视图控制器都在他们的.h中使用它
<UIWebViewDelegate
&GT;
答案 0 :(得分:2)
您提到两个视图控制器都符合UIWebViewDelegate
协议,但是设置为ExplainViewController.h
实例的ExplainViewController
的nib中UIWebView的委托出口。除非设置了UIWebView
委托属性,否则它不会调用该方法。
答案 1 :(得分:0)
- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType {
if (navigationType == UIWebViewNavigationTypeLinkClicked) {
BrowserController *browserController = [[BrowserController alloc] initWithUrl:request.URL.absoluteString];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:browserController];
[self.navigationController presentModalViewController: navController animated:YES];
[browserController release];
[navController release];
return NO;
}
return YES;
}