UIWebView的使用:创建,前进,后退

UIWebview本身不像Safari一样带地址栏,只是单纯的现实web的内容,所以当自己想定制浏览器的时候就需要预留一定的高度作为地址栏,这个例子里要做如下网页效果,包含前进按钮和后退按钮,按钮会根据是否可以前进后退来决定是否可点击,还有两个按钮目前先不用:

 

首先做好准备工作,SingleView项目,因为要判断前进后退按钮是否可以点击,所以在每个页面刷新后都要检验一下是否当前有后退页或前进页,这里需要用到代理方法来得到页面读取完毕的时刻,故在头文件里添加协议:

@interface ViewController : UIViewController<UIWebViewDelegate,MFMailComposeViewControllerDelegate>

 接下来在.m文件中初始化webview:

– (void)viewDidLoad

{

[super viewDidLoad];

 

rootWebView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 50, 1024, 698)];//头文件中已经有了UIWebView成员rootWebView了,这里空出50px给按钮

rootWebView.backgroundColor = [UIColor scrollViewTexturedBackgroundColor];//webview的背景色就是当页面滚动的时候能看到的页面下面的底色

rootWebView.delegate=self;//设定代理方法

NSURL  *url = [[ NSURL alloc ] initWithString :@”http://www.sina.com.cn”];

[ rootWebView loadRequest:[ NSURLRequest requestWithURL: url ]]; //webview的一种加载URL的方式

//NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@”third” ofType:@”html”]];

//   [rootWebview loadRequest:[ NSURLRequest requestWithURL: url ]];

[self.view addSubview:rootWebView];//添加web view

}

 这时候运行程序就可以看到如上图,没有按钮时候的界面,此时可以点击进入网页浏览,但是没法后退或者前进,接下来添加两个按钮分别是backButton和forwardButton,ib里拖拽到相应的位置,并编写点击的方法:

-(IBAction)goBackFucntion:(id)sender{

if (rootWebView.canGoBack) {

[rootWebView goBack];

NSLog(@”canGOBACK”);

}else {

NSLog(@”canNot GoBack”);

}

}

-(IBAction)forWardFucntion:(id)sender{

if (rootWebView.canGoForward) {

[rootWebView goForward];

NSLog(@”canGOFORWARD”);

}else {

NSLog(@”canNot GO Forward”);

}

}

这里有两个属性分别是canGoBack和canGoForward,webview会自动判断当前页面可不可以后退或者可不可以前进来分别设定这两个BOOL值,很省事,后面会用到;其次这里还用到了连个方法goBack和goForward.分别是前进和后退,现在再运行就应该可以前进和后退了。
在接下来是这两个按钮是否可点击的状态,原理是每当一个页面load完毕,两个按钮进行判断,如果有前一页,返回按钮就可点,如果有下一页,前进按钮可点,若哪个没有哪个按钮就反灰,这里用到代理方法:

-(void)webViewDidFinishLoad:(UIWebView *)webView{

if (!rootWebView.canGoBack) {

[backButton setEnabled:NO];

}else {

[backButton setEnabled:YES];

}

if (!rootWebView.canGoForward) {

[forwardButton setEnabled:NO];

}else {

[forwardButton setEnabled:YES];

}

}

 每次刷新后都会执行这个方法,现在应该实现了文章最开始所说的功能了。

发表评论

邮箱地址不会被公开。 必填项已用*标注