iOS开发之UIWebView

转自:http://www.cnblogs.com/zhuqil/archive/2011/07/28/2119923.html

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];

}

总结:本文通过实现一个简单的浏览器,说明了uiwebview的方法和属性,相信通过这个例子,应该明白uiwebview的使用了。

代码:UIWebViewDemo.zip

时间: 2024-11-05 13:55:57

iOS开发之UIWebView的相关文章

iOS开发之UIWebView自动滑动到顶部-备

但可以通过subview来操作. 通常用UIWebView加载网页,有时候需要点击一个按钮,或者页面的某个部位,使页面自动滚动到顶部,但是UIWebView不像UIScrollView那么方便. UIWebView *currentWebView; if ([currentWebView subviews]) { UIScrollView* scrollView = [[currentWebView subviews] objectAtIndex:0]; [scrollView setConte

iOS开发之UIWebView自动滑动到顶部

UIWebView *currentWebView; if ([currentWebView subviews]) { UIScrollView* scrollView = [[currentWebView subviews] objectAtIndex:0]; [scrollView setContentOffset:CGPointMake(0, 0) animated:YES]; }

iOS开发之UIWebView 无缝切换到 WKWebView (IMYWebView)

WKWebView 是IOS8新增的 Web浏览视图 优点:   加载速度  比UIWebView提升差不多一倍的, 内存使用上面,反而还少了一半. 缺点:   WKWebView 不支持缓存 和   NSURLProtocol 拦截了 我建议如果对缓存不高的页面可以使用,用户体验会提高很多. 由于项目中以前都是用 UIWebView  而且还要兼容 IOS8  之前的机子.  所以  我创建了一个新类  IMYWebView   你只要全局替换 UIWebView 就能无缝升级到 WKWebV

ios开发之NavBar和TarBar使用技巧

1  改变NavBar颜色:选中Navigation Bar 的Tint属性.选中颜色. 2  隐藏“back”按钮: self.navigationItem.hidesBackButton = YES; 3 隐藏"NavBar" : self.navigationController.navigationBarHidden = YES; 4 可以不用MainWindow.xib创建的Navigation.在每个view上自定义. 需要把每个控制页都加上以下代码来隐藏nav: -(vo

IOS开发之copy的问题

copy的目的就是修改副本,修改原始对象和副本时不会产生干扰. 定义一个不可变属性A,再定义一个可变属性B.用B做添加删除等操作后再将B赋值给A时,有些人习惯用A = B:其实这样是不安全的. 假设有下面的一段代码: ? 1 2 3 4 5 6 7 8 9 10   int main() {    NSMutableString *strM = [NSMutableString [email protected]"123"];    NSString *str = strM;    N

iOS开发之WKWebView简单使用和常用使用场景

iOS开发之 WKWebVeiw使用 想用UIWebVeiw做的,但是突然想起来在iOS8中出了一个新的WKWebView,算是UIWebVeiw的升级版.本着对新事物的好奇,就上网查了一下,但是找了好多个都没说的多了详细,于是就问谷歌,找文档,看看使用方法,试用了一下,果然不错,记录下来,大家分享! WKWebView的特点: 性能高,稳定性好,占用的内存比较小, 支持JS交互 支持HTML5 新特性 可以添加进度条(然并卵,不好用,还是习惯第三方的). 支持内建手势, 据说高达60fps的刷

iOS开发之Auto Layout入门

随着iPhone6与iOS8的临近,适配的问题讲更加复杂,最近学习了一下Auto Layout的使用,与大家分享.  什么是Auto Layout? Auto Layout是iOS6发布后引入的一个全新的布局特性,其目的是弥补以往Autoresizing在布局方面的不足之处,以及未来面对更多尺寸适配时界面布局可以更好的适应. 为什么要用Auto Layout? Autolayout能解决不同屏幕(iPhone4,iPhone5,iPad...)之间的适配问题. 在iPhone4时代开发者只需要适

iOS开发之CocoaPods的使用

透明色:00ff00ff //设置柱状图的颜色                ColorSet cs = new ColorSet();                cs.Id = "colorset1"; #region 设置柱状图的颜色 待开发                    string strColor = oYAXIS.Color;                    switch (strColor)                    {           

iOS开发之UILabel

UILabel是iOS开发中常用的一个组件,主要用来显示内容. UILabel的主要使用如下: ? 1 2 3 4 5 6 7 8 9 10 /*尺寸*/ CGRect labelRect = CGRectMake(100, 100, 80, 40); /*初始化*/ UILabel *titleLabel = [[UILabel alloc] initWithFrame:labelRect]; /*一些属性的设置*/ titleLabel.font = [UIFont systemFontOf