捕获模态UIWebView链接触摸

时间:2010-02-25 17:55:52

标签: iphone xcode uiwebview

我有一个视图控制器,我正在拦截它管理的网页视图中的链接。

我的主视图控制器有这种方法。

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

2 个答案:

答案 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;
}