连接到 Internet 时禁用警报视图 [关闭]

Posted

技术标签:

【中文标题】连接到 Internet 时禁用警报视图 [关闭]【英文标题】:Disable Alert-view When connect to the Internet [closed] 【发布时间】:2012-11-22 21:38:06 【问题描述】:

我有一个警报视图,当没有互联网连接时会弹出。我有办法在有互联网连接时禁用它…… 工作代码:

-(void)reachabilityChanged:(NSNotification*)note

    
        Reachability * reach = [note object];

        if([reach isReachable])
        
            notificationLabel.text = @"Notification Says Reachable";
            NSLog(@"Internet is Up");



        
        else
        
            notificationLabel.text = @"Notification Says Unreachable";
            NSLog(@"Internet is Down");
            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Please connect to Internet"
                                                            message:nil
                                                           delegate:self
                                                  cancelButtonTitle:nil
                                                  otherButtonTitle:nil
            [alert show];
        
    

-(void)dismissAlert:(UIAlertView *)alertView
          [alertView dismissWithClickedButtonIndex:0 animated:YES];

【问题讨论】:

【参考方案1】:

您可以将 alertView 保留为实例变量,然后在您的 iVar 上调用 didDismissWithButtonIndex。因此,您可以在 viewDidLoad 中分配警报并在之后使用它:

-(void)reachabilityChanged:(NSNotification*)note
        Reachability * reach = [note object];
        if([reach isReachable])
        
            notificationLabel.text = @"Notification Says Reachable";
            NSLog(@"Internet is Up");
            [self performSelector:@selector(dismissAlert:) withObject:alert afterDelay:0];
        
        else
        
            notificationLabel.text = @"Notification Says Unreachable";
            NSLog(@"Internet is Down");
            //or you can realloc here your alert
            UIActivityIndicatorView *progress= [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(125, 50, 30, 30)];
            progress.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhiteLarge;
            [alert addSubview:progress];
            [progress startAnimating];
            [alert show];
        
    

    -(void)dismissAlert:(UIAlertView *)alertView
              [alertView dismissWithClickedButtonIndex:0 animated:YES];
    

并确保在你的头文件中实现UIAlertViewDelegate

【讨论】:

您的代码甚至没有显示警报视图...。 我想在有互联网连接时禁用警报视图...。 如果您注意到了,我在您的代码末尾添加了一个方法,可以让您关闭警报。在if 语句中(所以当有互联网连接时),调用该方法。您是否在头文件中实现UIAlertViewDelegate 您的代码可以工作,但是当您连接到互联网时,警报不会消失... 你有没有测试过自己的代码是否不适合我...... ..【参考方案2】:
(void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex

用 buttonIndex 0 关闭它。

【讨论】:

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex if (buttonIndex == 0) 【参考方案3】:

您可以使用以下实例方法关闭UIAlertViews:

- (void)dismissWithClickedButtonIndex:(NSInteger)buttonIndex animated:(BOOL)animated

[alert dismissWithClickedButtonIndex:0 animated:YES];

当然,您首先需要找到对该警报视图的引用。

UIAlertView class reference

【讨论】:

以上是关于连接到 Internet 时禁用警报视图 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

使用 Reachability 2.2 检查 Internet 连接

Swift - 关闭警报消息关闭视图控制器

通过 Internet 连接到数据库

未连接到互联网时如何显示警报? iOS

无法通过 RDP 连接到 Windows 服务器 [关闭]

如何在 Swift 中禁用“加入 Wi-Fi 网络”警报消息?