iOS-学习之WebView的使用

本文探讨了在iOS开发中,如何在WebView加载网页时显示活动指示器,并在加载失败时进行错误提示。通过实现UIWebViewDelegate协议,监听webView:didFailLoadWithError:方法,可以及时捕获并处理网页加载错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

viewcontroller.m
- (void)viewDidLoad  
{  
    [super viewDidLoad];  
    webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];  
    NSURLRequest *request =[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.baidu.com"]];  
    [self.view addSubview: webView];  
    [webView loadRequest:request];  
} 

手机的网络环境是实时变化的,网络慢的时候,怎么提示用户网页正在打开呢?在网页打开出错的时候怎么提示用户呢?这时候我们就需要知道网页什么时候打开的,

什么时候加载完成,什么时候出错了。那么我们需要实现这个<UIWebViewDelegate>协议

UIWebView中几个重要的函数
1.- (void )webViewDidStartLoad:(UIWebView  *)webView   网页开始加载的时候调用
2.- (void )webViewDidFinishLoad:(UIWebView  *)webView  网页加载完成的时候调用

3.- (void)webView:(UIWebView *)webView  didFailLoadWithError:(NSError *)error 网页加载错误的时候调用

加载等待界面
为了给用户更直观的界面效果,我们加上等待的loading界面试试
在webViewDidStartLoad加入等待
[cpp] view plaincopy
<strong>- (void) webViewDidStartLoad:(UIWebView *)webView  
{  
    //创建UIActivityIndicatorView背底半透明View       
    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];    
    [view setTag:108];    
    [view setBackgroundColor:[UIColor blackColor]];    
    [view setAlpha:0.5];    
    [self.view addSubview:view];    
      
    activityIndicator = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 32.0f, 32.0f)];    
    [activityIndicator setCenter:view.center];    
    [activityIndicator setActivityIndicatorViewStyle:UIActivityIndicatorViewStyleWhite];    
    [view addSubview:activityIndicator];    
  
    [activityIndicator startAnimating];  
   </strong>  

加载完成或失败时,去掉loading效果
[cpp] view plaincopy
<strong>- (void) webViewDidFinishLoad:(UIWebView *)webView  
{  
    [activityIndicator stopAnimating];  
    UIView *view = (UIView*)[self.view viewWithTag:108];  
    [view removeFromSuperview];  
    NSLog(@"webViewDidFinishLoad");  
  
}  
- (void) webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error  
{  
    [activityIndicator stopAnimating];  
    UIView *view = (UIView*)[self.view viewWithTag:108];  
    [view removeFromSuperview];  
    </strong>  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值