起初我们在订单中心做了许多订单的列表,但是订单详情页面只供给用户展示,所以因为人力不够等等原因,我们选择用UIWebView来展示订单详情。但是后来由于业务拓展需求,需要在UIWebView做一些hybrid交互问题就来。
屏幕快照 2016-03-29 下午3.42.45.png在iOS8,iOS9上点击“再次预定”“返程预定”OK。
在iOS7下点击则出现了crash. (按照网上下载xcode6.4可以解决iOS7模拟器的问题,我删除了xcode7.2再安装,发现cocopods好多第三方库已经不能在低版本的xcode6.4的SDK上跑代码,各种报错。然后又删掉了xcode6.4重新装xcode7.3最新版,此处花费去了一天)
哎嘛,真是百思不得其解,郁闷了好几天,关键是xcode7.3真机测试iOS7也无法链条,只好打个企业包弹窗查看是否走进了哪个方法,一步一步来排查,后来在QA的手机上看了一个crash日志,(最后就连看log搞的整个xcode都崩溃,人霉的时候喝水都塞牙缝)发现最后崩溃在一个UIWebView的一个私有方法内,于是我查了一下, webView:didFirstLayoutInFrame.
http://blog.csdn.net/hursing/article/details/8791533
此处其实是依旧比较迷茫的,但是我看了该API方法好想跟Layout有关,我查了一下代码,居然发现了有相关的代码
屏幕快照 2016-03-29 下午3.58.44.png于是我又搜索了一些关于iOS7 webView的crash的问题
https://segmentfault.com/q/1010000002575561/a-1020000002575775 屏幕快照 2016-03-29 下午4.01.20.png
最后我把自己项目工程文件里面那段关于- (void) viewWillLayoutSubviews的方法给删除掉,再测试,就OK啦,crash也顺利得到解决,真是哭死。
总结就是,可能开发过程中我们RD自己测试会不能发现隐藏的问题,需要一些非常规手段来做,比如点击这个再次预定,返程预定,iOS7上订单中心到详情页面OK啦没有问题,但是从填写订单页面进入支付到订单详情,再点击一次去支付调起钱包,此时整个webView点击返回,点击去支付,点击再次预定,返程预定都没有效果了,最后发现是我在页面将要消失的地方将webview.delegate = nil.却在页面将要出现的地方没有重新赋上delegate = self。等等疑难杂症。可能也是因为自己粗心大意没有注意到漏掉了。遇到问题不要哭,不要怕,这一切都将成为过去。
最后 thanks~!
网友评论