虽然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此时控制台会打印出一些警告,需要手动回到主线程。