ios – 在webViewDidStartLoad之后,UIWebView陷入困境

ios – 在webViewDidStartLoad之后,UIWebView陷入困境,第1张

概述我们的iOS应用程序有一个Web视图,它从文件:URL中呈现页面.当用户触摸< A>时切换页面的元素,大约20%的时间,它被卡住如下: >用户点击< A>链接 >我们得到WebView.shouldStartLoadWithRequest回调 >我们得到WebView.webViewDidStartLoad回调 >此后没有任何反应 屏幕仍然显示原始页面及其上的链接.我们可以通过两种方式打破僵局: 我们的iOS应用程序有一个Web视图,它从文件:URL中呈现页面.当用户触摸< A>时切换页面的元素,大约20%的时间,它被卡住如下:

>用户点击< A>链接
>我们得到WebVIEw.shouldStartLoaDWithRequest回调
>我们得到WebVIEw.webVIEwDIDStartLoad回调
>此后没有任何反应

屏幕仍然显示原始页面及其上的链接.我们可以通过两种方式打破僵局:

>旋转设备
>点按屏幕

此时,页面将立即完成加载.

我们用这里的食谱:

Javascript console.log() in an iOS UIWebView

让我们对页面加载有所了解.我们将JavaScript端的东西放在我们加载到页面上的第一个脚本文件中,并且在我们执行rotate-or-tap变通方法之前它不会打印它的消息.

所以它似乎在开始加载页面和开始评估页面上的东西之间的某个地方卡住了.

我们已经尝试了一些解决方法,但没有一个帮助:

>设置location.href而不是使用标签
>从JavaScript超时设置location.href
>在dIDStartLoad回调中,创建了一个在webVIEw上反复调用setNeeddisplay的线程

知道我们可能做错了什么吗?

解决方法 您可以在XCode中使用gdb来调试问题.我认为可以有断点的消息的canIDates是:

- (voID)webVIEwDIDStartLoad:(UIWebVIEw *)webVIEw- (voID)webVIEw:(UIWebVIEw *)webVIEw dIDFailLoaDWithError:(NSError *)error@H_404_46@  

我还会在UIViewController显示你的UIWebVIEw时添加一个中断:

- (voID)willRotatetoInterfaceOrIEntation:(UIInterfaceOrIEntation)toInterfaceOrIEntation duration:(NSTimeInterval)duration@H_404_46@  

然后你可以逐步完成并希望你的UIWebVIEw子类有什么问题.

如果您不想添加断点,只需在XCode调试器中运行您的应用程序,并在加载时应用程序无响应时点击控制台窗口上方的“暂停执行”按钮.

没有任何代码可以很难知道发生了什么,但我敢打赌Xcode可以帮助你快速找到问题.

祝好运!

总结

以上是内存溢出为你收集整理的ios – 在webViewDidStartLoad之后,UIWebView陷入困境全部内容,希望文章能够帮你解决ios – 在webViewDidStartLoad之后,UIWebView陷入困境所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1034490.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-24
下一篇2022-05-24

发表评论

登录后才能评论

评论列表(0条)

    保存