啊神的技术博客

我的小博客,小智慧

UIWebView 与 原生系统的简单跳转交互

| 评论

简单介绍UIWebView

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

UIWebView的使用

 它既然也是view,当然就可以像其他view一样的创建,如下:

 UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 560)];

 webView.delegate = self;//先在此设置下代理,等下会实现其代理方法

 当然这是创建一个对象,想要加载一个网页还需要实现loadRequest:这个方法;这时你会发现该方法需要一个NSURLRequest类型的参数;那简单我们就来创建一个又如何;我们使用NSURLRequest的类方法requestWithURL:来创建;咦,又会发现这个类方法需要一个NSURL类型的参数;不管了,那就先创建NSURL对象吧;


 NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];

[webView loadRequest:[NSURLRequest requestWithURL:url];

 切记后面一定要是一个可访问的网址;  最后,因为它也是View,别忘记加到父视图上

[self.view addSubview:webView];

既然要实现与原生系统的交互,那就不得不实现它的代理方法

-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
   NSString *urlStr = request.URL.absoluteString; //取出webView交互的url链接;
        //根据urlStr链接中的参数,去push到系统中的任何页面都可以的
       /*实现code
        .....
       */
      return YES;
}

附加说明:urlStr是网页中,点击带有响应,传过来的网址,这个网址要看你服务端给的什么内容,针对内容去跳转到对象的页面(如:是一个头像的点击,则跳转到对应的用户信息,这是网址中,服务端就应该封装的有对应的用户的ID);  该代理方法返回值是BOOL类型的,所以当你需要用webView来显示的时候,一定要返回YES; 至于跳转到App内其他页面就没有这么讲究了,YES or NO all ok; 建议返回NO, 以免出现web内与应用内两次跳转;  如果服务端需要传参数进去(如:token) ,这是你就需要在创建NSURL对象时,将token封装进去

[NSURL URLWithString:@"http://www.baidu.com?token=pzshgawegwegeugiwef93i24"]
自己在项目中就是这么实现的,如果有疑问或者有更好地方法,请与留言交流;

评论