2011-06-11 2 views
0

답변을 검색하는 일부 사용자는 문제를 언급했지만 아무도 해결하지 못했습니다. 네트워크 연결 변경 (예 : 네트워크 손실)이 발생했음을 사용자에게 알리기 만하면됩니다. 아래의 코드는 작동하지만 일반적으로 여러 개의 경고가 표시됩니다. 3 여러 개의 내부 호출이 정확하기 때문에 발생할 수있는 이유를 이해하지만 경고 표시가 하나만있는 것 같지 않습니다. 경고가 이미 표시되고 있는지 (alertshowing) BOOL을 사용하여 감지하려고했지만 여전히 도움이되지 않습니다. 의견을 보내 주셔서 감사합니다.iPhone 다중 경고 네트워크 연결 확인 후 호출

- (void)applicationDidBecomeActive:(UIApplication *)application { 
    ////NSLog(@"DidBecomeActive"); 

    [self performSelector:@selector(getNetworkConnection) withObject:nil afterDelay:5.0]; 

} 


-(void)getNetworkConnection 
{ 
    Reachability *r = [Reachability reachabilityWithHostName:@"www.google.com"]; 

    NetworkStatus internetStatus = [r currentReachabilityStatus]; 

     if ((internetStatus != ReachableViaWiFi) && (internetStatus != ReachableViaWWAN)) 
     { 
      if (!self.alertShowing) { 
      UIAlertView *myAlert = [[[UIAlertView alloc] initWithTitle:@"No Internet Connection" message:@"This app require an internet connection via WiFi or cellular network to work." delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil] autorelease]; 
      self.alertShowing = YES; 
      [myAlert show]; 
      } 
     }  
} 

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex 
{ 
    self.alertShowing = NO; 
} 
+0

내 사과를 호출해야 위에, 나는 그것을 해결하는 방법을 모르겠어요. – lionz

+0

태그 아래의 작은 "편집"버튼을 사용하여 질문을 편집하십시오. – PengOne

+0

나는 그것을 알아 내었고 관측자를 2 곳에 두었고 도달 가능성을 여러 번 부르는 것이 잘못되었다. 이번 주에 너무 오랫동안 코드를 보았습니다. – lionz

답변

1
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNetworkChange:) name:kReachabilityChangedNotification object:nil]; 

위의 코드 라인은 전체 응용 프로그램에 대해 하나의 시간을 호출해야합니다.
여러 번 호출되는 함수에서이 코드 줄을 호출하면 알림에 여러 경고가 표시됩니다.

그래서 앱 전체에서 라이브가 될 싱글 톤 클래스를 생성하고 싱글 톤 클래스 용 객체가 생성되는 영역에서 위의 코드 행을 호출하는 것이 좋습니다.

참고 : - 코드의 라인이 질문에 태그 전체 응용 프로그램에 대해 한 번만