2014-06-09 4 views
2

UIWebViews가 약간있는 탭 기반의 앱을 만들고 있습니다. 앱 스토어 승인을 통과하려면 네트워크 연결이 없으면 오류를 구현해야합니다. 나는 초보자이지만 이것을 시도했지만 아무 일도 없었습니다.UIWebView가 인터넷에 연결되어 있지 않을 때 UIAlertView 구현하기

-(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error { 

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" 
               message:@"Can't connect. Please check your internet Connection" 
               delegate:self 
             cancelButtonTitle:@"OK" 
             otherButtonTitles:nil]; 
[alert show]; 

} 

Reachability를 사용해 보았지만 복잡하고 UIAlertView에 구현하는 방법을 잘 모르겠습니다. 이 코드는 조정할 수 있습니까, 아니면 쓰레기입니까?

+2

페이지가로드되는 동안 네트워크가 꺼지면 알림이 표시됩니다 .. – iphonic

+0

또는 네트워크를 껐다가 응용 프로그램을 실행하십시오. – iPatel

+0

나는 광고를로드하지 않습니다. – dannysandler

답변

0

당신은 아래 링크를 사용하여있는 viewDidLoad 또는 ViewWillAppear ..Download 그들에 도달 가능성 코드를 사용하여 네트워크 연결을 확인할 수 있습니다

https://github.com/tonymillion/Reachability

Reachability *reach = [Reachability reachabilityForInternetConnection]; 
    NetworkStatus netStatus = [reach currentReachabilityStatus]; 
    if (netStatus != NotReachable) 
    { 
    NSLog(@"Async.....Network is Available"); 
    } 
    else 
    { 
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Network Error" message:@"No Network Available" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil , nil]; 
     [alertView show]; 
    } 

또는 당신은

    있는 UIWebView

    의 대리자 메서드 아래에 경고를 넣어 수 있습니다
  • (void) webView : (UIWebView *) webView didFailLoadWithError : (NSError *) 오류

희망 하시겠습니까 ...!

+0

이것은 WebView 일 때만 작동하지만 WebView가 Tab에있을 때는 작동하지 않습니다. – dannysandler

+0

그것은 작동합니다 ... 위의 코드를 ViewWillAppear에서보기 컨트롤러의 어디에 놓으십시오 webview ..로드! – Vidhyanand

+0

나는 시도했다 : - (void) viewWillAppear : (BOOL) animated { 도달 가능성 * 도달 ... 등등 ... 작동하지 않았다 ... – dannysandler

1

UIWebView에 대한 대리인을 할당 한 viewcontroller. (webview.delegate = self를 설정 한 viewcontroller 코드에서) 헤더 (.h) 파일을 UIWebViewDelegate 프로토콜에 커밋해야합니다. 그런 다음에야 당신의 방법

- (무효) 웹보기 : (있는 UIWebView *) 웹보기 didFailLoadWithError : (NSError *) 오류

가 트리거됩니다. 나는 당신이 누락 된 것 같아 그렇지 않으면 귀하의 프로세스가 정확합니다. .h 파일에 UIWebViewDelegate를 추가하십시오.

희망이 도움이 될 것입니다.

2

delegate methods of webView을 사용하고 ViewController에서 구현하는 것이 좋습니다.

webView에는 주로 세 가지 대리자 메서드가 있습니다.

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error 

- (void)webViewDidFinishLoad:(UIWebView *)webView 

didFailLoadWithError 메소드에서 [오류 코드]를 사용하여 오류 코드를 식별 할 수 있습니다. 당신은 귀하의 요구 사항에 따라 이들 중 하나를 사용할 수 있습니다.

// Error codes for CFURLConnection and CFURLProtocol 
    kCFURLErrorUnknown = -998, 
    kCFURLErrorCancelled = -999, 
    kCFURLErrorBadURL = -1000, 
    kCFURLErrorTimedOut = -1001, 
    kCFURLErrorUnsupportedURL = -1002, 
    kCFURLErrorCannotFindHost = -1003, 
    kCFURLErrorCannotConnectToHost = -1004, 
    kCFURLErrorNetworkConnectionLost = -1005, 
    kCFURLErrorDNSLookupFailed = -1006, 
    kCFURLErrorHTTPTooManyRedirects = -1007, 
    kCFURLErrorResourceUnavailable = -1008, 
    kCFURLErrorNotConnectedToInternet = -1009, 

이러한 오류 코드는 CFNetworkError.h에서 사용할 수 있습니다. 내 응용 프로그램에서 나는 이런 식으로 사용했습니다.

if ([error code] == kCFURLErrorNotConnectedToInternet) { 
     // if we can identify the error, we can present a more precise message to the user. 
     UIAlertView *alertView=[[[UIAlertView alloc] initWithTitle:APP_NAME message:@"Sorry, there doesn’t seem to be an internet connection." delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles: nil]autorelease]; 
     [alertView show]; 
} 

이것은 잘 작동합니다.

+0

이 코드 목록을 보내 주셔서 감사합니다. 여기에서 취하고 싶은 접근 방식으로 나를 도울 것입니다. 감사합니다! – Lev