UIWebView跳转原生界面

虽然webview的体验差,但是在App初期能节省很多开发成本,灵活地使用也能发挥各自的优势。

在交互方面,可以利用webview的代理方法,根据将要请求的url判断;也可以利用JS交互。前者相对简单点,先说第一种,Demo地址https://github.com/QiuYunxiang/WebToNavtive_1
第一种很简单,主要是依靠webview的代理方法func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool
做的测试是百度网址,点击百度糯米时阻止web加载而进行原生操作:

func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {
        print(request.URL)
        if (request.URL?.absoluteString == "https://m.nuomi.com/?cid=wise_shouye_nuomi") {
            print("原生界面")
            return false
        }
        return true
    }

当然,在我们的app当中这个url完全不必是url,可以是一些约定好的type字段即可。

第二种利用JS实现交互还在学习中,先推荐一个写的比较详细的:http://www.jianshu.com/p/cdaf9bc3d65d

9.9更新
利用JS实现交互的时候选择了最简单的一种,直接获取JS中的方法名,使用block的方式,具体的使用上面链接的文章写的很详细了并附有Demo。
需要注意一点的是,在block的回调里默认好像是子线程,如果涉及到UI此时控制台会打印出一些警告,需要手动回到主线程。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、简介 近两年随着HTML5的迅速发展与日趋成熟,越来越多的移动开发者选择使用HTML5来进行混合开发,不仅节约...
    RainyGY阅读 1,943评论 1 12
  • 一、简介 近两年随着HTML5的迅速发展与日趋成熟,越来越多的移动开发者选择使用HTML5来进行混合开发,不...
    宝宝teacher阅读 2,390评论 3 15
  • http://www.cnblogs.com/mddblog/p/5281748.html 一、整体介绍 UIWe...
    F麦子阅读 1,277评论 0 2
  • 我毕业已有两年余了,期间似乎发生了许多事,可就当时而言,并没有觉得有什么波澜不平的。却常常因为朋友之间的不联...
    陈兮阅读 521评论 2 0
  • 从苏州来一路辗转,到杭州已是黄昏,盛夏的骄阳薄薄地洒在远处的地平线上。酝酿了一整季的暑气还未褪去,细密的汗...
    扬州飞花阅读 421评论 0 0