美文网首页程序员iOS开发记录iOS Developer
iOS UIWebView 与 原生系统交互

iOS UIWebView 与 原生系统交互

作者: Ashen | 来源:发表于2015-12-10 15:18 被阅读1603次
    简单介绍UIWebView

    关于UIWebView这里我就不多介绍了,可以简单理解为一个在iOS 端显示网页的一个控件;

    UIWebView的使用

    它既然也是view,当然就可以像其他view一样的创建,如下:
    <pre><code> UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 560)];

    webView.delegate = self;//先在此设置下代理,等下会实现其代理方法</code></pre>
     当然这是创建一个对象,想要加载一个网页还需要实现loadRequest:这个方法;这时你会发现该方法需要一个NSURLRequest类型的参数;那简单我们就来创建一个又如何;我们使用NSURLRequest的类方法requestWithURL:来创建;咦,又会发现这个类方法需要一个NSURL类型的参数;不管了,那就先创建NSURL对象吧;
    <pre><code>
    NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];

    [webView loadRequest:[NSURLRequest requestWithURL:url];</code></pre>
     切记后面一定要是一个可访问的网址;
     最后,因为它也是View,别忘记加到父视图上
    <pre><code>[self.view addSubview:webView];</code></pre>
    既然要实现与原生系统的交互,那就不得不实现它的代理方法
    <pre><code>-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
    NSString urlStr = request.URL.absoluteString; //取出webView交互的url链接;
    //根据urlStr链接中的参数,去push到系统中的任何页面都可以的
    /
    实现code
    .....
    */
    return YES;
    }</code></pre>
     <b>附加说明</b>:urlStr是网页中,点击带有响应,传过来的网址,这个网址要看你服务端给的什么内容,针对内容去跳转到对象的页面(如:是一个头像的点击,则跳转到对应的用户信息,这是网址中,服务端就应该封装的有对应的用户的ID);
     该代理方法返回值是BOOL类型的,所以当你需要用webView来显示的时候,一定要返回YES; 至于跳转到App内其他页面就没有这么讲究了,YES or NO all ok; 建议返回NO, 以免出现多次跳转;
     如果服务端需要传参数进去(如:token) ,这是你就需要在创建NSURL对象时,将token封装进去
    <pre>[NSURL URLWithString:@"http://www.baidu.com?token=pzshgawegwegeugiwef93i24"]</pre>

    自己在项目中就是这么实现的,如果有疑问或者有更好地方法,请与留言交流;

    相关文章

      网友评论

        本文标题:iOS UIWebView 与 原生系统交互

        本文链接:https://www.haomeiwen.com/subject/xtkyhttx.html