不积跬步,无以至千里;不积小流,无以成江海。——荀子
一、搜索并高亮UIWebView中的文本
在DebugWindow这个项目中,使用QLPreviewController来预览txt文件虽然很方便,但是实现不了打开一个日志文件后自动滚动到最底部,如果日志较多的话,很难翻到最下面查看最新日志。因此,这里我换成了使用UIWebView来加载txt文件,加载完成之后自动滚动到页面底部,而且也很容易复制想要的内容。最后,有时候日志较多的情况下,为了方便找到关键日志,我们需要对日志进行搜索然后高亮搜索到的内容。这里有篇文章介绍如果搜索和高亮UIWebView中的文本:Search and highlight text in UIWebView
二、修改调试工具DebugWindow
更新了了DebugWindow这个项目,主要实现了:
- 使用UIWebView替代QLPreviewController来预览日志文件。
- 解决中文乱码问题。 - 在日志文件中搜索并高亮字符串。
- 增删改查当前沙盒中保存的键值对,方便调试。
三、WKWebView goBack的时候报错
在项目中根据系统版本,使用了UIWebView和WKWebView加载网页,当从有些二级页面返回上级页面(也就是调用goBack)的时候,总是提示加载失败(这里是我在收到失败回调做的提示),报错信息如下:
Error Domain=NSURLErrorDomain Code=-999 "(null)" UserInfo={NSErrorFailingURLKey=your url,
_WKRecoveryAttempterErrorKey=<WKReloadFrameErrorRecoveryAttempter: 0x7fc7e3e25d10>, NSErrorFailingURLStringKey=your url}
研究发现是使用WKWebView的时候的回调,而且是在iOS9.0及以上版本的手机上才会有,在iOS8的真机上显示正常。再然后呢,是部分网页加载的时候会这样子,目前还搞不清楚这些网页做了什么处理造成的。
经查资料发现:** 原来WKWebView在之前的请求还没有加载完成,下一个请求发起了,此时webview会取消掉之前的请求,因此会收到失败的回调。** 这里的code=-999,也就是NSURLErrorCancelled。解决办法就是在收到失败回调的时候判断如果是这种失败,就不提示加载失败。