1、使用UIWebView加载网页

运行XCode 4.3,新建一个Single View Application,命名为WebViewDemo。

2、加载WebView

在ViewController.h添加WebView成员变量和在ViewController.m添加实现

[cpp] view plaincopyprint?
  1. #import <UIKit/UIKit.h>
  2. @interface ViewController : UIViewController
  3. {
  4. UIWebView *webView;
  5. }
  6. @end
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
{
UIWebView *webView;
}
@end
[cpp] view plaincopyprint?
  1. ViewController.m
ViewController.m
[cpp] view plaincopyprint?
  1. - (void)viewDidLoad
  2. {
  3. [super viewDidLoad];
  4. webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
  5. NSURLRequest *request =[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.baidu.com"]];
  6. [self.view addSubview: webView];
  7. [webView loadRequest:request];
  8. }
- (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>协议

3、实现协议,在ViewController.h修改如下:

[cpp] view plaincopyprint?
  1. #import <UIKit/UIKit.h>
  2. @interface ViewController : UIViewController<UIWebViewDelegate>
  3. {
  4. UIWebView *webView;
  5. }
  6. @end
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController<UIWebViewDelegate>
{
UIWebView *webView;
}
@end

按住control+command+向上键,切换到ViewController.m文件,这是我们在文件中打入- (void) webView,就能看到如下实现方法:

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

4、实现这三个方法,加入NSLog。

先在viewDidLoad 的webView实例化下面加上

[webView setDelegate:self];设置代理。这样上面的三个方法才能得到回调。

三个方法实现如下:

[cpp] view plaincopyprint?
  1. <SPAN style="FONT-FAMILY: Arial, Verdana, sans-serif; COLOR: #333333">- (void) webViewDidStartLoad:(UIWebView *)webView
  2. {
  3. NSLog(@"webViewDidStartLoad");
  4. }
  5. - (void) webViewDidFinishLoad:(UIWebView *)webView
  6. {
  7. NSLog(@"webViewDidFinishLoad");
  8. }
  9. - (void) webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
  10. {
  11. NSLog(@"didFailLoadWithError:%@", error);
  12. }
  13. </SPAN>
- (void) webViewDidStartLoad:(UIWebView *)webView
{
NSLog(@"webViewDidStartLoad");
}
- (void) webViewDidFinishLoad:(UIWebView *)webView
{
NSLog(@"webViewDidFinishLoad");
}
- (void) webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
{
NSLog(@"didFailLoadWithError:%@", error);
}

运行打印:

2012-06-23 15:20:29.728 WebViewDemo[1001:f803] webViewDidStartLoad

2012-06-23 15:20:29.991 WebViewDemo[1001:f803] webViewDidFinishLoad

那我们试试error情况,把wifi关掉,运行打印结果:

2012-06-23 15:23:58.939 WebViewDemo[1087:f803] webViewDidStartLoad

2012-06-23 15:23:59.016 WebViewDemo[1087:f803] webViewDidFinishLoad

请求结果不变,为什么关掉网络还成功了呢?缓存?我换163.com试试,这是真正的结果出来了:

2012-06-23 15:24:41.131 WebViewDemo[1134:f803] webViewDidStartLoad

2012-06-23 15:24:41.149 WebViewDemo[1134:f803] didFailLoadWithError:Error Domain=NSURLErrorDomain Code=-1009 "The Internet connection appears to be offline." UserInfo=0x6b41660 {NSErrorFailingURLStringKey=http://www.163.com/, NSErrorFailingURLKey=http://www.163.com/, NSLocalizedDescription=The Internet connection appears to be offline., NSUnderlyingError=0x6eae690 "The Internet connection appears to be offline."}

连接错误了,调用了 didFailLoadWithError。

5、加载等待界面

为了给用户更直观的界面效果,我们加上等待的loading界面试试

在webViewDidStartLoad加入等待

[cpp] view plaincopyprint?
  1. <STRONG>- (void) webViewDidStartLoad:(UIWebView *)webView
  2. {
  3. //创建UIActivityIndicatorView背底半透明View
  4. UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
  5. [view setTag:108];
  6. [view setBackgroundColor:[UIColor blackColor]];
  7. [view setAlpha:0.5];
  8. [self.view addSubview:view];
  9. activityIndicator = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 32.0f, 32.0f)];
  10. [activityIndicator setCenter:view.center];
  11. [activityIndicator setActivityIndicatorViewStyle:UIActivityIndicatorViewStyleWhite];
  12. [view addSubview:activityIndicator];
  13. [activityIndicator startAnimating];
  14. </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];


加载完成或失败时,去掉loading效果

[cpp] view plaincopyprint?
  1. <STRONG>- (void) webViewDidFinishLoad:(UIWebView *)webView
  2. {
  3. [activityIndicator stopAnimating];
  4. UIView *view = (UIView*)[self.view viewWithTag:108];
  5. [view removeFromSuperview];
  6. NSLog(@"webViewDidFinishLoad");
  7. }
  8. - (void) webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
  9. {
  10. [activityIndicator stopAnimating];
  11. UIView *view = (UIView*)[self.view viewWithTag:108];
  12. [view removeFromSuperview];
  13. </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];

运行效果:


使用UIWebView加载网页相关推荐

  1. iOS UIWebView加载网页、文件、HTML

    UIWebView是用来加载加载网页数据的一个框架.UIWebView可以用来加载pdf,word,doc,等等文件,生成webview 有两种方法,1.通过storyboard 拖拽 2.通过all ...

  2. UIWebView加载Loading...两种方法

    第一种方法:使用UIView and UIActivityIndicatorView //创建UIWebView WebView = [[UIWebView alloc] initWithFrame: ...

  3. iOS加载网页【全解】

    iOS加载网页目前有4种方式 UIWebView WKWebView Safari浏览器(app外部):openURL Safari浏览器(app内部):SFSafariViewController ...

  4. UIWebView加载HTTPS

    当使用UIWebview加载https的站点时webview总是会报NSURLErrorDomain code=-1202,导致网页加载失败.自己打印错误和网上搜索是因为证书失效,https使用超文本 ...

  5. UIWebView加载HTTPS站点出现NSURLErrorDomain code=-1202 SSL

    最近在做push 信息到facebook中.当使用UIWebview加载https的站点时webview总是会报NSURLErrorDomain code=-1202,导致网页加载失败.自己打印错误和 ...

  6. 关于使用UIWebView加载HTTPS站点出现NSURLErrorDomain code=-1202

    最近在做push 信息到facebook中.当使用UIWebview加载https的站点时webview总是会报NSURLErrorDomain code=-1202,导致网页加载失败.自己打印错误和 ...

  7. WKWebView加载网页加载不出来问题

    之前有一个项目一直使用WKWebView,比UIWebView占用性能少很多,而且很流畅.网上有很多小伙伴遇到一个问题,WKWebView加载网页加载不出来,白屏等,于是就说WK还不成熟. 不要轻易下 ...

  8. [Android]webview直接加载网页允许JS,进度条,当前应用内跳转

    webview,用于在应用里面直接加载网页 本代码参考了: 官方的webview实例介绍:https://developer.android.com/guide/tutorials/views/hel ...

  9. uiwebview 读取本地html,UIWebView加载本地HTML文件

    一.准备HTML文件及其资源文件 使用UIWebView加载本地的HTML文件 index.html,在index.html中引用了本地的图片.CSS文件.JS文件以及外部的图片. index.htm ...

最新文章

  1. form中的onblur事件简单的介绍
  2. layui table 滚动 键盘
  3. android 微信浮窗实现_Android实现类似qq微信消息悬浮窗通知功能
  4. powershell 下独立silent 安装 浏览器问题
  5. storm后台启动命令(避免新开窗口)
  6. 写文件+三剑客+别名
  7. linux下面升级 Python版本并修改yum属性信息
  8. Cannot find source code based button in SE24
  9. KVM安装Windows Server 2008 R2使用virtio硬盘
  10. 基于Passthru的NDIS开发的个人理解
  11. P - C语言实验——某年某月的天数
  12. EasySQLMAIL中企业微信的配置方法
  13. MIDP应用程序的属性
  14. xcode里面找不到头文件
  15. Linux 安装python 模块及库
  16. mysql 视图没主键,mysql创建视图后打开提示没有主键,mysql视图
  17. 51单片机 模块化编程
  18. CANOPEN 学习(一) CANFestival 字典工具 环境搭建
  19. 微信小程序·实现列表页和详情页同步收藏
  20. C语言,switch语句系列

热门文章

  1. Win32ASM学习[19]:结构与联合
  2. 二叉树中的最大路径和
  3. python元组和集合
  4. 开启linux ssh
  5. 【数据结构基础应用】【顺序表】
  6. scanner close_Java Scanner close()方法与示例
  7. java bitset_Java BitSet hashCode()方法及示例
  8. ffmpeg 解码视频(h264、mpeg2)输出yuv420p文件
  9. input 0.1无法相加_你真的知道0.1+0.2为何不等于0.3吗?
  10. 刚刚有水了一道,用递归实现进制转换