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, nonatomic) IBOutlet 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 localizedDescription] delegate: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;//自动对页面进行缩放以适应屏幕
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。