2010-02-25 3 views
0

뷰 컨트롤러가 있으며 관리하는 웹보기 내의 링크에서 터치를 가로 채고 있습니다.모달 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); 
} 

내가 그것을 가로 챌 수있는 방법.

모두 언급 뷰 컨트롤러<UIWebViewDelegate>

답변

2

당신은 모두 뷰 컨트롤러가 UIWebViewDelegate 프로토콜을 준수 언급 그들의 .H이를 사용하지만,에 ExplainViewController.h 세트에 대한 펜촉에있는 UIWebView의 위임 콘센트입니다된다 ExplainViewController의 인스턴스 대리자 속성이 설정되어 있지 않으면 메서드를 호출하지 않습니다.

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