如果 webview 中没有互联网连接,iOS 会显示警报

Posted

技术标签:

【中文标题】如果 webview 中没有互联网连接,iOS 会显示警报【英文标题】:iOS show alert if no internet connection in webview 【发布时间】:2014-06-15 18:32:03 【问题描述】:

我正在 xCode 中制作一个带有简单 web 视图的应用程序。如果没有可用的互联网连接,我希望通知用户。当没有互联网连接时,会弹出一个窗口告诉您“没有可用的互联网连接”和两个选项 - 重试,然后取消。我该怎么做呢?我是这方面的初学者,所以请简单解释一下。

ViewController.m

#import "ViewController.h"

@interface ViewController () <UIWebViewDelegate>

@end

@implementation ViewController

@synthesize webView;

- (void)viewDidLoad


NSURL *url = [NSURL URLWithString:@"http://MyWebPage.com"];
NSURLRequest *requestURL = [NSURLRequest requestWithURL:url];
webView.delegate = self;
[webView loadRequest:requestURL];

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


- (void)didReceiveMemoryWarning

[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.


@end

【问题讨论】:

呃,你具体做了哪些研究? SO 不是您的“为我编写代码”网站。这很简单,但你应该自己学习。 通过让你解释我如何做到这一点,我将能够学习.. 这不是教学网站。从 Apple 文档中学习,如果您遇到问题,请在此处通过显示您尝试过的内容和无效的内容来提问。 【参考方案1】:

我同意 Leo 的观点,但我会简短地解释一下:

    从 apple 或 github 获取类 Reachability: -- 它是一个类,允许您检查互联网/查看是否可以访问特定主机/ ....

    在加载网站之前,在您的 viewController 中检查可访问性.. -- 也许在 viewWillAppear 中

    - (void)viewWillAppear:(BOOL)animated 
            [super viewWillAppear:animated];        
            _reachability = [Reachability reachabilityForInternetConnection];
            [self handleReachability];
    
            //optional monitor
            [[NSNotificationCenter defaultCenter] addObserver:self
                                                     selector:@selector(handleReachability: )
                                                         name:@"kReachabilityChangedNotification" object:nil];
    
            [_reachability startNotifier]; //! don't forget to remove the notification in viewWillDisappear  
    
        
    

    实现句柄方法,例如显示一个简单的 UIAlertView:

    -(void)handleReachability:(NSNotificationCenter*)notification
        NetworkStatus netStatus = [reach currentReachabilityStatus];
    
        if(netStatus == NotReachable) 
            [self setNoInternet:YES];
            // what happens when network/server down: 
            if([webView isLoading]) 
                [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
                [webView stopLoading];
                hasLoaded = NO;
            
    
        else 
            [self setNoInternet:NO];
            if(![webView isLoading] && !hasLoaded) 
                hasLoaded = NO;
                [self load];
            
        
    
    

【讨论】:

以上是关于如果 webview 中没有互联网连接,iOS 会显示警报的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法在没有 Internet 连接的情况下在 webview 中加载网站?

Swift:没有互联网连接时如何在 webview 中显示错误消息? [复制]

检查是不是有互联网连接 webView 没有出现

Xcode 和 WebView:如果没有 Internet 连接,则加载本地 html(后备)

Swift WebView - 无连接模式[重复]

在检查互联网连接期间 iOS 应用程序冻结