【问题标题】:iPhone Multiple Alerts Called after a network connection check网络连接检查后调用 iPhone 多个警报
【发布时间】:2011-06-11 19:59:56
【问题描述】:

在寻找答案时,有些人注意到了这个问题,但没有人解决它。如果发生网络连接更改(即网络丢失),我只想通知用户。下面的代码有效,但我收到多个警报,通常是 3 个。我理解它可能发生的原因是因为为了准确性而进行了多次内部调用,但我似乎不能只显示一个警报,仅此而已。我尝试使用 BOOL 来检测警报是否已经显示(alertshowing),但它仍然没有帮助。 感谢您的想法。

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

【问题讨论】:

  • 我为这个问题的标签道歉,我不知道如何解决它。
  • 使用标签下方的“编辑”小按钮来编辑您的问题。
  • 我想通了,将观察者放置在 2 个位置并多次调用可达性是错误的。这周我一直盯着代码太久了。

标签: iphone networking connection uialertview


【解决方案1】:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNetworkChange:) name:kReachabilityChangedNotification object:nil];

对于整个应用程序,上述代码行只应被调用一次。
如果您在多次调用的函数中调用这行代码,通知还会显示许多警报。

所以我建议您创建一个将在整个应用程序中运行的单例类,并在创建单例类对象的区域调用上述代码行。

注意:- 整个应用程序只应调用上述代码行一次

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-23
    • 1970-01-01
    • 2010-10-10
    • 1970-01-01
    • 1970-01-01
    • 2012-04-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多