在看了http://www.cnblogs.com/zhuqil/archive/2011/07/28/2119923.html一文博客后,根据参考做了一个差不多一样的小Demo,算是笔记记录

运行结果截图

    

1.创建一个新工程叫UIWebViewDemo; File->New->Project ->single View Application -> next

2.界面布局

拖动三个控件,Web View Text Field 和 Button把TextField和button放到Web View上面,也可以打开

   

调整三个控件所处位置

4.声明输出口

右键某个控件,然后拖动到WebViewViewController.h文件的@interface和@end之间

然后弹出一个框框,我们输入控件名字;

webView

textField

Button

再给button添加一个方法

然后我们声明一个UIActivityIndicatorView对象和一个 loadWebPageWithString方法,并添加上UIWebViewDelegate协议

#import <UIKit/UIKit.h>  @interface WebViewViewController : UIViewController<UIWebViewDelegate> @property (strong, nonatomic) IBOutlet UIWebView *webView; @property (strong, nonatomic) IBOutlet UITextField *textField; @property (strong, nonatomic) IBOutlet UIButton *button;  @property (strong,nonatomic) UIActivityIndicatorView *activityIndicatorView;  - (IBAction)buttonPressed:(id)sender;  -(void)loadWebPageWithString:(NSString *)urlString; @end

5.在我们声明控件输出口的时候,系统也会自动生成一些代码

@synthesize textField; @synthesize webView; @synthesize button; - (void)viewDidUnload {     [self setTextField:nil];     [self setWebView:nil];     [self setButton:nil];     [super viewDidUnload];      }  - (IBAction)buttonPressed:(id)sender {      } 

还需要在添加@synthesize activityIndicatorView

6.viewDidLoad方法中

- (void)viewDidLoad {     [super viewDidLoad]; //自动缩放页面,以适应屏幕  webView.scalesPageToFit = YES;     webView.delegate = self;     //    指定进度轮大小     self.activityIndicatorView = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(0, 0, 32, 32)]; //    设置进度轮的中心也可以[self.activityIndicatorView setCenter:CGPointMake(30, 30)];     [self.activityIndicatorView setCenter:self.view.center]; //  设置activityIndicatorView风格       [self.activityIndicatorView setActivityIndicatorViewStyle:UIActivityIndicatorViewStyleGray];     [self.webView addSubview:self.activityIndicatorView];     [self buttonPressed:nil];       }

7.实现方法代码部分

加载一个URL方法

-(void)loadWebPageWithString:(NSString *)urlString {     if (self.textField.text != nil) { //        追加一个字符串         urlString = [@"http://" stringByAppendingFormat:urlString];         NSURL *url = [NSURL URLWithString:urlString]; //        NSURLRequest类方法用于获取URL         NSURLRequest *request = [NSURLRequest requestWithURL:url]; //        webView加载URL         [webView loadRequest:request];     }       }

按钮事件

//按钮事件,点击按钮开始调用loadWebPageWithString方法 - (IBAction)buttonPressed:(id)sender {     [textField resignFirstResponder];     [self loadWebPageWithString:textField.text]; //    点击完button后隐藏textField和button     if (sender==button) {         textField.hidden = YES;         button.hidden = YES;     } }

UIWebView委托方法

//UIWebView委托方法,开始加载一个url时候调用此方法 -(void)webViewDidStartLoad:(UIWebView *)webView {     [self.activityIndicatorView startAnimating]; }
//UIWebView委托方法,url加载完成的时候调用此方法 -(void)webViewDidFinishLoad:(UIWebView *)webView {     [self.activityIndicatorView stopAnimating]; }
//加载url出错的时候调用此方法 -(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error { // 判断button是否被触摸     if (!self.button ) {                   UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@""                                                         message:[error localizedDescription]                                                        delegate:nil                                               cancelButtonTitle:@"OK"                                               otherButtonTitles: nil];         [alert show];     }      }

8.另外说一下UIActivityIndicatorView,实例提供轻型视图,这些视图显示一个标准的旋转进度轮,在IB中的控件

iPhone提供了几种不同样式风格的UIActivityIndicatorView。

activityIndicatorView有三种风格

typedef enum {

UIActivityIndicatorViewStyleWhiteLarge,

UIActivityIndicatorViewStyleWhite,

UIActivityIndicatorViewStyleGray,

} UIActivityIndicatorViewStyle;

UIActivityIndicator- ViewStyleWhite和UIActivityIndicatorViewStyleGray是最简洁的。黑色背景下最适合白色版本的外观,白色背景最适合灰色外观。它非常瘦小,而且采用夏普风格。选择白色还是灰色时要格外注意。全白显示在白色背景下将不能显示任何内容。而UIActivityIndicatorViewStyleWhiteLarge只能用于深色背景。它提供最大、最清晰的指示器。

对于activityIndicatorView的实现把他放在了UIWebView的两个委托方法中

当开始加载一个URL时候,开始activityIndicatorView,加载完毕停止activityIndicatorView动画加载效果

[self.activityIndicatorViewstartAnimating];

[self.activityIndicatorViewstopAnimating];

9.在 -(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error方法中,是检测加载出错时候调用此方法,当运行的时候还没输入URL地址就开始调用这个方法,提示not url信息,所以在这用了一个if判断,按钮是否触发事件,当输入一个URL之后,点击按钮GO才加载URL,然后在调用URL是否是有效的,[errorlocalizedDescription]是自动检测系统的错误信息;

源代码:http://download.csdn.net/detail/duxinfeng2010/4468804

转载于:https://blog.51cto.com/duxinfeng/1208727

UIWebView控件的简易浏览器小案例相关推荐

  1. 日期控件--WdatePicker的使用小技能

    ** 日期控件–WdatePicker的使用小技能拓展 ** 控件使用小技能get! 1.让"清空"按钮不显示 <input id="ipt" oncli ...

  2. 用C#编写ActiveX控件,开发浏览器控件,注册ActiveX 控件

    用C#编写ActiveX控件,开发浏览器控件,注册ActiveX 控件 用C#编写ActiveX控件 开发浏览器控件这是本控件开发完成后的一个简单应用.我们可以利用它以本地文件夹为单位来批量更新服务器 ...

  3. vue简易计算器小案例09

    简易计算器小案例 逻辑部分没有完全实现,主要用来练手,加强理解父子组件之间的通信过程. 效果: 简易计算器代码 counter.html <!DOCTYPE html> <html ...

  4. 无法打开多维数据集(使用Dundas的OLAP显示控件时的一个小的问题)

    最近在搞一个与OLAP有关的小项目,当然是Web架构的,在显示方面用的是比较常用的Dundas控件,在VS 2005  里面开发的,在开发时每次浏览都是在VS的集成环境中,每次在读取多维数据集方面都没 ...

  5. python 窗口控件变大变小_详解:用Python+AutoIt实现界面工具开发过程

    前言: 今天为大家带来的内容是,详解:Python+AutoIt实现界面工具开发过程!(部分代码用图片方式呈现出来,方便各位观看与收藏) AutoIt简述 AutoIt一个使用类似BASIC脚本语言的 ...

  6. 使用ActiveX控件打开IE浏览器

    2019独角兽企业重金招聘Python工程师标准>>> 事情是这样的,客户让做一个单点登录的功能,但是另一个系统和我们公司的系统部署在同一个服务器上,导致在同一个浏览器使用JS原生代 ...

  7. iStylePDF在线阅读编辑控件在多浏览器(IE,firefox,chrome,opera等)中的使用

    iStylePDF是基于ActiveX技术开发的一个COM组件,一般是应用于IE浏览器中来使用,但是随着越来越多的浏览器出现,导致客户端的环境非常复杂,客户的需求又是多样化的,所以我们这里介绍了一种更 ...

  8. ActiveX控件在IE浏览器中自动下载

    ---------------------------------------------------------------------- 1.请用MFC ActiveX ControlWizard ...

  9. web页面引用OCX控件,客户端浏览器设置

    这两天,做了个北恩呼叫电话来电显示的接口,引入其提供的OCX控件[UsbPhoneV3.1.ocx], 在客户端注册如下: 32位系统: 1.把UsbPhoneV3.1.ocx拷到c:\Windows ...

最新文章

  1. linux Crontab 使用
  2. 解决ssh无操作自动断开[转载,已经验证]
  3. mysql忘记密码解决方法
  4. Java:log4j:WARN no appenders could be found for logger问题解决
  5. oracle awr 数据删除,Oracle AWR 删除历史快照 说明【转自dave偶像大神】
  6. .NET 并行(多核)编程系列之六 Task基础部分完结篇
  7. 进程间同步(互斥量、信号量)
  8. Mybatis 详解--- 一级缓存、二级缓存
  9. Map接口与学习系列(二)---LinkedHashMap
  10. 【noip 2016】 蚯蚓(earthworm)
  11. 微软警告:Office 已遭IE RCE 新0day 攻击
  12. Silverlight图片处理——(伸展,裁剪,蒙版)
  13. 机器学习全面教程无监督学习系列
  14. noip普及组2018T2 龙虎斗
  15. 视频教程-ArcGIS for Android视频教程-Android
  16. IP错误引起MongoDB副本集初始化失败
  17. 很多抽筋的笑话,心情不好的孩子慢慢看。悠着点,不要真抽筋~
  18. composer入门教程
  19. 银行制定快捷支付限额原因
  20. python京东抢购软件神器_用Python在京东抢购商品

热门文章

  1. IBM的漂浮机器人,被马斯克的火箭送去太空了
  2. 谷歌推出理解神经网络的新方法SVCCA | NIPS论文+代码
  3. n对括号问题,(求n对括号的正确排列有多少)
  4. Vue后台数据模拟以及抓取线上数据
  5. Centos7-Mysql-5.6.41一主两从的搭建
  6. Handler、AsyncTask、HandlerThread和IntentService之间的对比
  7. Intel张旭:通信和计算的融合将是5G的关键
  8. 计算机基础及linux入门
  9. Linux 软件包管理常用命令 -- yum
  10. Windows Server 2008 R2 RODC(只读域控制器)