UIWebView是iOS sdk中一个最常用的控件。是内置的浏览器控件,我们可以用它来浏览网页、打开文档等等。这篇文章我将使用这个控件,做一个简易的浏览器。如下图:

我们创建一个Window-based Application程序命名为:UIWebViewDemo

UIWebView的loadRequest可以用来加载一个url地址,它需要一个NSURLRequest参数。我们定义一个方法用来加载url。在UIWebViewDemoViewController中定义下面方法:

- (void)loadWebPageWithString:(NSString*)urlString
{
NSURL *url =[NSURL URLWithString:urlString];
NSLog(urlString);
NSURLRequest *request =[NSURLRequest requestWithURL:url];
[webView loadRequest:request];
}
复制代码

在界面上放置3个控件,一个textfield、一个button、一个uiwebview,布局如下:

在代码中定义相关的控件:webView用于展示网页、textField用于地址栏、activityIndicatorView用于加载的动画、buttonPress用于按钮的点击事件。

@interface UIWebViewDemoViewController :UIViewController<UIWebViewDelegate> {   
    IBOutlet UIWebView *webView;
    IBOutlet UITextField *textField;
    UIActivityIndicatorView *activityIndicatorView;
     
}
- (IBAction)buttonPress:(id) sender;
- (void)loadWebPageWithString:(NSString*)urlString;
@end

使用IB关联他们。

设置UIWebView,初始化UIActivityIndicatorView:

- (void)viewDidLoad
{
[super viewDidLoad];
webView.scalesPageToFit =YES;
webView.delegate=self;
activityIndicatorView = [[UIActivityIndicatorView alloc]
initWithFrame : CGRectMake(0.0f, 0.0f, 32.0f, 32.0f)] ;
[activityIndicatorView setCenter: self.view.center] ;
[activityIndicatorView setActivityIndicatorViewStyle: UIActivityIndicatorViewStyleWhite] ;
[self.view addSubview : activityIndicatorView] ;
[self buttonPress:nil];// Do any additional setup after loading the view from its nib.}
复制代码

UIWebView主要有下面几个委托方法:

1、- (void)webViewDidStartLoad:(UIWebView *)webView;开始加载的时候执行该方法。
2、- (void)webViewDidFinishLoad:(UIWebView *)webView;加载完成的时候执行该方法。
3、- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error;加载出错的时候执行该方法。

我们可以将activityIndicatorView放置到前面两个委托方法中。

- (void)webViewDidStartLoad:(UIWebView *)webView
{
[activityIndicatorView startAnimating] ;
}- (void)webViewDidFinishLoad:(UIWebView *)webView
{
[activityIndicatorView stopAnimating];
}
复制代码

buttonPress方法很简单,调用我们开始定义好的loadWebPageWithString方法就行了:

- (IBAction)buttonPress:(id) sender
{
    [textField resignFirstResponder];
    [self loadWebPageWithString:textField.text];
     
}

当请求页面出现错误的时候,我们给予提示:

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
{
    UIAlertView *alterview = [[UIAlertView alloc] initWithTitle:@"" message:[error localizedDescription]  delegate:nil cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
    [alterview show];
    [alterview release];
}

本文转自编程小翁博客园博客,原文链接:http://www.cnblogs.com/wengzilin/archive/2012/03/15/2397445.html,如需转载请自行联系原作者

(转)UIWebView的基本用法,适合新手相关推荐

  1. python秒表小项目_适合新手练习的几个python小项目

    关于python练习的小项目,其实就是一些常用的模块的针对练习 一.找出电脑中遗忘的大文件 # !/usr/bin/env python # _*_ coding:utf-8 -*- import o ...

  2. python需要多大的硬盘_适合新手练习的几个python小项目

    关于python练习的小项目,其实就是一些常用的模块的针对练习 一.找出电脑中遗忘的大文件 # !/usr/bin/env python # _*_ coding:utf-8 -*- import o ...

  3. 一个特别适合新手练习的Android小项目——每日一妹纸

    原文链接 http://sparkyuan.me/ 转载请注明出处 介绍 当前版本V 1.2 刚开始学习Android的时候,主要就是学习了一些Activity的生命周期,各种View和Layout的 ...

  4. 靶机DC-8(详细渗透,适合新手渗透)

    目录 靶机DC-8 (详细渗透,适合新手渗透) 0x01靶机描述 0x02环境搭建 1. 下载并导入靶机 2. 查看网络适配器 3. 启动靶机 0x03靶机渗透 一. 信息收集 1. 主机发现 2. ...

  5. GitHub 上有哪些适合新手跟进的优质项目?(附地址)

    作者 | 小G 来源 | 公众号GitHubDaily 从 2015 年至今,我们累计在 GitHub 上看了上万个开源项目,并一直关注着开源圈的动态,通过这样的习惯,使得我们挖掘出了不少优质的 Gi ...

  6. 交换机配置软件crt安装_非常详细的锐捷二层交换机配置教程,适合新手小白

    笔者上一篇文章写了关于锐捷三层交换机配置教程,但是这只是核心的配置,还不能搭建一个完整的企业网络.那么这一篇就来讲一下锐捷的二层交换机配置,比起三层交换机的配置,二层交换机配置就非常简单了.同样,今天 ...

  7. MYSQL服务的极简免配置快绿色速安装法[适合新手和懒人]

    强调:适合新手和懒人! mysql最快速安装方法(极简.免配置): 下载官方绿色压缩包,解压到某目录最好为英文),用管理员权限打开CMD,定位到mysqld.exe所在目录,直接运行 mysqld - ...

  8. python基础教程第二版和第三版哪个好-python基础教程 2版和3版哪个适合新手?!...

    python基础教程 2版和3版哪个适合新手? 现在学是学python3. 两者的差异发者本身影响并不大,个别语法细微的差比如python3的print数方式使用,一些常用模块的名称差异,一些机制的差 ...

  9. python基础教程第三版和第二版选哪个-python基础教程 2版和3版哪个适合新手?!...

    python基础教程 2版和3版哪个适合新手? 现在学是学python3. 两者的差异发者本身影响并不大,个别语法细微的差比如python3的print数方式使用,一些常用模块的名称差异,一些机制的差 ...

  10. python难不难学-超级适合新手学习的python教程,入门其实不难?

    在互联网时代很多人都希望掌握一个与互联网相关的知识,比如Python的知识就非常重要,因为无论是操作新媒体平台还是去制作一些软件,我们都需要掌握一些Python的技巧,而且学习一些Python的知识, ...

最新文章

  1. 助力视障人士,微软等公司捐赠首批AI有声内容
  2. mysql 重要监控参数_mysql 的重要参数,监控需要
  3. 我创意很大,玩转《猫和老鼠》手游,瓜分40万大奖
  4. 函数指针 指针函数
  5. Comptia Strata认证考点相关情况【2018.06.05更新】
  6. python代码示例-Python3 实例
  7. JAVA分页查询实现
  8. PHP爬虫微博某个话题的所有内容,GitHub - wansho/sina_weibo_crawl: 爬取新浪微博某一话题的数据,可以替代微博搜索接口...
  9. PHP 判断一个数是否是质数
  10. LibXL 算法分析(附注册机)
  11. win7(64位)+vs2010+orge1.8.1
  12. try 和 catch 用法
  13. SpringBoot 打成的 jar 包和普通的 jar 包有什么区别
  14. 【学习笔记】汇编:关于CMP的使用实例
  15. gom引擎和java,GOM和GEE引擎小心!最新漏洞独家首发公布,请各大GM注意了
  16. 如何写好状态机?跑马灯/流水灯Verilog HDL实现
  17. Microsoft SQL Server 图书管理数据库的建立
  18. web前端大作业--响应式风景旅游网页设计(国庆旅游主题-HTML+CSS+JavaScript)实现
  19. sql 数据库显示 正在恢复
  20. [深度学习-NPL]ELMO、BERT、GPT学习与总结

热门文章

  1. 【三支火把】--- 关于BIOSUEFI查阅资料网站总结
  2. 数据库练习(1)——建立数据库
  3. php 可逆加密方法
  4. JAVA多线程--线程的同步安全
  5. JQuery选择和设置表单值
  6. iOS cocoapods的使用规范说明及示例(.podspec配置文件)
  7. 六大设计原则(三)DIP依赖倒置原则
  8. 【转】子弹短信内部技术分享:Redis
  9. 链表排序 Sort List
  10. 解决Windows x64bit环境下无法使用PLSQL Developer连接到Oracle DB中的问题