UIWebView控件用法

UIWebView是IOS SDK中一个常用的控件,是内置的浏览器控件,我们可以用它来浏览网页,打开文档等到。本篇博客主要讲解一下UIWebView控件制作简易的浏览器

效果图如下:


在这里首先我采用的是可视化编程,直接在视图上拖放控件.

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

- (void)loadWebPageWithString:(NSString*)urlString

{

    

    NSURL *url =[NSURL URLWithString:urlString];

    NSURLRequest *request =[NSURLRequest requestWithURL:url];

    [_webView loadRequest:request];

}


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



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

#import <UIKit/UIKit.h>


@interface MHTViewController : UIViewController<UIWebViewDelegate>

@property (nonatomic, retain)UIActivityIndicatorView *activityIndicatorView;

@property (weak, nonatomicIBOutlet UITextField *textField;

@property (weak, nonatomic) IBOutlet UIWebView *webView;

- (IBAction)buttonPress:(UIButton *)sender;

- (void)loadWebPageWithString:(NSString*)urlString;

@end


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

}

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

1、

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType; 

当网页视图被指示载入内容而得到通知。

2、- (void)webViewDidStartLoad:(UIWebView *)webView;开始加载的时候执行该方法。

3、- (void)webViewDidFinishLoad:(UIWebView *)webView;加载完成的时候执行该方法。

4、- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error;加载出错的时候执行该方法。

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

- (void)webViewDidStartLoad:(UIWebView *)webView

{

    [_activityIndicatorView startAnimating] ;

}

- (void)webViewDidFinishLoad:(UIWebView *)webView

{

    [_activityIndicatorView stopAnimating];

}

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

- (IBAction)buttonPress:(UIButton *)sender

 {

    [_textField resignFirstResponder];

    [self loadWebPageWithString:_textField.text];

}

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

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error

{

    UIAlertView *alterview = [[UIAlertView alloc] initWithTitle:@"" message:[error localizedDescriptiondelegate:nil cancelButtonTitle:nil otherButtonTitles:@"OK", nil];

    [alterview show];

    [alterview release];

}


附:

效果图:


//导航按钮

     //返回上一个页面

     UIBarButtonItem * btn1 = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"btn_navigationBar_back1"] style:UIBarButtonItemStylePlain target:self action:@selector(back:)];

    //暂停按钮

    UIBarButtonItem  * btn2 = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemStop target:self action:@selector(stop:)];

    self.navigationItem.leftBarButtonItems = @[btn1,btn2];

    //进入下一个页面按钮

    UIBarButtonItem * btn3 = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"btn_navigationBar_back"] style:UIBarButtonItemStylePlain target:self action:@selector(go:)];

    //刷新按钮

    UIBarButtonItem  * btn4 = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:self action:@selector(refresh:)];

   self.navigationItem.rightBarButtonItems = @[btn3, btn4];

    [btn1 release];

    [btn2 release];

    [btn3 release];

    [btn4 release];

//分别对方法进行实现:

[webView goBack];//返回

[webView goForward];//向前

[webView reload];//重新加载数据

[webView stopLoading];//停止加载数据

属性:

self.opaque = NO//设置是否不透明

self.scalesPageToFit = YES;//自动对页面进行缩放以适应屏幕



郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。