2014-04-07 3 views
0

내 응용 프로그램 (iOS 7)에서 UIWebView를 사용하여 웹 페이지를로드하고 있습니다. 내 웹 페이지에 몇 개의 링크가 끊어져 있습니다. 이러한 링크를 클릭하면 alertView.I을 사용하여 사용자를 친밀하게하고 싶지만 다음 위임을 구현했지만 응답을 얻지 못했습니다.UIwebView에서 끊어진 링크 처리

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType; 
- (void)webViewDidFinishLoad:(UIWebView *)webView; 
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error; 

참고 : - 깨지지 않은 링크를 클릭하면 이러한 위임 메서드가 호출됩니다.

WebView가 깨진 링크에 응답 할 수있는 방법이 있습니까? ??

미리 감사드립니다.

+1

의미 :

@interface ViewController : UIViewController<UIWebViewDelegate> 

m 파일에

? 404 오류를 언급하고 있습니까? – abmussani

+0

깨진 링크 - 서버에서 리소스를 사용할 수 없거나 해당 링크가 현재 서버에없는 다른 페이지를 가리킬 수 있습니다. –

답변

0

이 시도 :

- (void)webViewDidFinishLoad:(UIWebView *)webView 
{ 
    int status = [[[webView request] valueForHTTPHeaderField:@"Status"] intValue]; 
    if (status == 404) { 

    } 
} 

여기에서이 상태를 확인할 수 있습니다. 희망이 도움이 .. ..

+0

네, 맞습니다.하지만이 대표는 끊어진 링크를 클릭 할 때 응답하지 않습니다. 내 문제에 대해 이야기합니다. 호출 된 경우 현재 상태를 확인하고 그에 따라 작업을 수행 할 수 있습니다. 그러나 UIWebView의 제약 조건에 맞지 않을 때 링크를 클릭하십시오 –

0

shouldStartLoadWithRequest 가능성이 소비하는 것입니다. 당신이해야

:

  1. 요청에서 URL을 가져옵니다.
  2. url에 비동기 요청을 보냅니다.
  3. 응답이 있는지 확인하십시오. 응답이 없으면이 요청을 취소하고 그렇지 않으면 TRUE을 반환하여 허용합니다.

요청을 보내는 방법을 살펴보십시오. 당신이 요청을 취소하고 지정된 페이지를 사용할 수없는 사용자를 알릴 수있는이 방법을 사용

Checking reachability again a specific page

Is it wise to use Reachability to check for a remote host's availability

. 당신은 당신이 유효한 응답이있는 경우, 일반적으로 200입니다 응답HTTP 상태 코드에도 체크 수 있습니다.

희망이 있습니다.

또 다른 방법, 즉 웹 페이지 자체에서 처리 페이지를 사용할 수없고 back 이전 페이지로 리디렉션 말한다 몇 가지 일반적인 페이지에 리디렉션하는 것입니다.

편집 :

는 별도의 프로젝트 h 파일에이 코드를보십시오 : 링크가 깨진 무엇

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 

    NSURLRequest* request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com"]]; 

    UIWebView *wbWebView = [[UIWebView alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 

    [self.view addSubview:wbWebView]; 
    [wbWebView setDelegate:self]; // <------------- set delegate 
    [wbWebView loadRequest:request]; 
} 

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 
{ 
    NSLog(@"request loading... %@", [request URL].absoluteString); 

    // TODO : Validate here 
    // If validated then return TRUE otherwise false; 
    return YES; 
} 

- (void)webViewDidFinishLoad:(UIWebView *)webView 
{ 
    NSLog(@"request finished loading"); 
} 

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error 
{ 
    NSLog(@"request failed loading"); 
} 
+0

shouldStartLoadWithRequest : 위의 링크를 클릭하면 위임 메서드가 호출되지 않습니다. 정상적인 링크 만이 대리자가 호출됩니다. 아무 응답도 UIWebView 대리인으로부터 얻지 못합니다. –

+0

@BennyDalby, 내 업데이트를 확인하십시오. – NeverHopeless

관련 문제