iOS网络篇3-利用UIWebView做一个浏览器功能

在UIkit中,苹果封装了一个特别好用的控件UIWebView能够实现简单的网页加载和文件加载

一、加载网页资源

1.首先新建一个singleView项目,在storyboard拖如下控件

技术分享

2.设置相关属性连接如下

技术分享

3.在ViewController.m里的类扩展遵守UISearchBarDelegate和UIWebViewDelegate

@interface ViewController () <UISearchBarDelegate,UIWebViewDelegate>

/**网页展示*/
@property (weak, nonatomic) IBOutlet UIWebView *webView;

@end

4.在ViewController.m里抽出一个方法,用于浏览器加载指定的字符串

// 让浏览器加载指定的字符串
- (void)loadString:(NSString *)str
{
     NSString *urlStr = str;
    //1.判断资源路径是否以http://开头
    if (![str hasPrefix:@"http://"]) {//不是以http://开头
        //资源通过百度搜索
        urlStr = [NSString stringWithFormat:@"http://m.baidu.com/s?word=%@", str];
    }
    //3.创建URL
    NSURL *url = [NSURL URLWithString:urlStr];
    
    //4.创建请求
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    
    //5.加载请求
    [self.webView loadRequest:request];
}

5.当搜索框输入文字完毕后点击确定(返回)按钮,会调用searchBarSearchButtonClicked:(UISearchBar *)searchBar代理方法

#pragma mark - 搜索栏点击搜索按钮后调用
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar
{
    //加载指定资源
    [self loadString:searchBar.text];
    //退出键盘
    [self.view endEditing:YES];
}

6.如果想首页显示百度页面,直接在viewDidLoad方法里加载百度首页

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    [self loadString:@"http://m.baidu.com"];
    
}

7.实现浏览器的前进后退功能

在UIWebView控件内部已经实现了前进和后退功能,我们只需和底部工具条前进后退按钮进行相关连即可,在storyboard中进行如下处理

技术分享

8.实现UIWebView的代理方法,控制前进后退是否能被点击,这里不要忘记在类扩展拥有这两个属性

@interface ViewController () <UISearchBarDelegate,UIWebViewDelegate>

/**网页展示*/
@property (weak, nonatomic) IBOutlet UIWebView *webView;

/**后退*/
@property (weak, nonatomic) IBOutlet UIBarButtonItem *back;
/**前进*/
@property (weak, nonatomic) IBOutlet UIBarButtonItem *forward;

@end
#pragma mark - UIWebView代理方法
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    self.back.enabled = self.webView.canGoBack;
    self.forward.enabled = self.webView.canGoForward;
}

OK,UIWebView的简单加载网页使用,利用UIWebView还可以加载Bundle资源,也简单易学,这里就不详细阐述了。

 

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