UIWebView控件的简易浏览器小案例
在看了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控件的简易浏览器小案例相关推荐
- 日期控件--WdatePicker的使用小技能
** 日期控件–WdatePicker的使用小技能拓展 ** 控件使用小技能get! 1.让"清空"按钮不显示 <input id="ipt" oncli ...
- 用C#编写ActiveX控件,开发浏览器控件,注册ActiveX 控件
用C#编写ActiveX控件,开发浏览器控件,注册ActiveX 控件 用C#编写ActiveX控件 开发浏览器控件这是本控件开发完成后的一个简单应用.我们可以利用它以本地文件夹为单位来批量更新服务器 ...
- vue简易计算器小案例09
简易计算器小案例 逻辑部分没有完全实现,主要用来练手,加强理解父子组件之间的通信过程. 效果: 简易计算器代码 counter.html <!DOCTYPE html> <html ...
- 无法打开多维数据集(使用Dundas的OLAP显示控件时的一个小的问题)
最近在搞一个与OLAP有关的小项目,当然是Web架构的,在显示方面用的是比较常用的Dundas控件,在VS 2005 里面开发的,在开发时每次浏览都是在VS的集成环境中,每次在读取多维数据集方面都没 ...
- python 窗口控件变大变小_详解:用Python+AutoIt实现界面工具开发过程
前言: 今天为大家带来的内容是,详解:Python+AutoIt实现界面工具开发过程!(部分代码用图片方式呈现出来,方便各位观看与收藏) AutoIt简述 AutoIt一个使用类似BASIC脚本语言的 ...
- 使用ActiveX控件打开IE浏览器
2019独角兽企业重金招聘Python工程师标准>>> 事情是这样的,客户让做一个单点登录的功能,但是另一个系统和我们公司的系统部署在同一个服务器上,导致在同一个浏览器使用JS原生代 ...
- iStylePDF在线阅读编辑控件在多浏览器(IE,firefox,chrome,opera等)中的使用
iStylePDF是基于ActiveX技术开发的一个COM组件,一般是应用于IE浏览器中来使用,但是随着越来越多的浏览器出现,导致客户端的环境非常复杂,客户的需求又是多样化的,所以我们这里介绍了一种更 ...
- ActiveX控件在IE浏览器中自动下载
---------------------------------------------------------------------- 1.请用MFC ActiveX ControlWizard ...
- web页面引用OCX控件,客户端浏览器设置
这两天,做了个北恩呼叫电话来电显示的接口,引入其提供的OCX控件[UsbPhoneV3.1.ocx], 在客户端注册如下: 32位系统: 1.把UsbPhoneV3.1.ocx拷到c:\Windows ...
最新文章
- linux Crontab 使用
- 解决ssh无操作自动断开[转载,已经验证]
- mysql忘记密码解决方法
- Java:log4j:WARN no appenders could be found for logger问题解决
- oracle awr 数据删除,Oracle AWR 删除历史快照 说明【转自dave偶像大神】
- .NET 并行(多核)编程系列之六 Task基础部分完结篇
- 进程间同步(互斥量、信号量)
- Mybatis 详解--- 一级缓存、二级缓存
- Map接口与学习系列(二)---LinkedHashMap
- 【noip 2016】 蚯蚓(earthworm)
- 微软警告:Office 已遭IE RCE 新0day 攻击
- Silverlight图片处理——(伸展,裁剪,蒙版)
- 机器学习全面教程无监督学习系列
- noip普及组2018T2 龙虎斗
- 视频教程-ArcGIS for Android视频教程-Android
- IP错误引起MongoDB副本集初始化失败
- 很多抽筋的笑话,心情不好的孩子慢慢看。悠着点,不要真抽筋~
- composer入门教程
- 银行制定快捷支付限额原因
- python京东抢购软件神器_用Python在京东抢购商品