我正在用几个UIWebViews创建一个相当简单的基于选项卡的应用程序。通过App Store审批,我需要实现一个错误,如果没有网络连接。我是初学者,但我试过了,什么也没发生。
-(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];
}
我试过可达性,但它很复杂,我不确定如何实现它到一个UIAlertView。这段代码可以通过调整工作吗?或者它是垃圾?
我建议你使用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 code]来识别错误代码。您可以根据需要使用其中任何一个。
// 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];
}
你已经为UIWebView分配了委托的视图控制器;(在viewcontroller的代码中,你已经设置了webview.delegate=self),你需要在header (.h)文件中提交到UIWebViewDelegate协议。只有你的方法:
-(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
将被触发。我想你错过了这一点,否则你的过程是正确的。所以,在你的。h文件中添加UIWebViewDelegate。
你可以在ViewDidLoad或ViewWillAppear使用可达性代码检查网络连接。使用下面的链接下载
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的委托方法下面设置alert
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
希望它能帮助你…!