iOS UIWebView 与 原生系统交互

简单介绍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>

自己在项目中就是这么实现的,如果有疑问或者有更好地方法,请与留言交流;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,916评论 25 708
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,196评论 4 61
  • 当事件发生时,改善你的解释风格就等于降低事件对你的伤害,提升事件对你的积极意义! 一个人的解释风格如此重要,它深刻...
    sageness阅读 166评论 0 0
  • 不知何时, 无意走进一个胡同里, 快乐充斥着肆意,肆意包裹着简单。 妮妲来了, 事情变了, 不好进,舍不得退。 在...
    Tiamo渡阅读 152评论 1 1
  • 最近发布的小米5C,可谓搅动了大半个手机圈,不仅仅因为其”消失的大黑边“,更因其是小米首款搭载自主处理器的手机。 ...
    科技前方阅读 183评论 0 0