gpt4 book ai didi

ios - UIWebView 在 webViewDidStartLoad 之后卡住了

转载 作者:可可西里 更新时间:2023-11-01 05:58:06 25 4
gpt4 key购买 nike

我们的 iOS 应用程序有一个 Web View ,它从 file: URL 呈现页面。当用户触摸 <A>元素切换页面,大约20%的时候,卡住如下:

  1. 用户点击 <A>链接
  2. 我们得到 WebView.shouldStartLoadWithRequest 回调
  3. 我们得到 WebView.webViewDidStartLoad 回调
  4. 此后什么也没有发生

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

  1. 旋转设备
  2. 点击屏幕

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

我们使用了这里的食谱:

Javascript console.log() in an iOS UIWebView

让我们对页面加载有一些了解。我们将 javascript 端的东西放在我们加载到页面上的第一个脚本文件中,直到我们执行旋转或点击变通方法后它才会打印消息。

因此它似乎卡在了开始加载页面和开始评估页面内容之间的某处。

我们尝试了很多解决方法,但都没有帮助:

  • 设置 location.href 而不是使用标签
  • 从 javascript 超时设置 location.href
  • 在 didStartLoad 回调中,创建了一个在 webView 上反复调用 setNeedDisplay 的线程

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

最佳答案

您可以在 XCode 中使用 gdb 来调试问题。我认为可能有断点的消息候选者是:

- (void)webViewDidStartLoad:(UIWebView *)webView
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error

我还会在 UIViewController 中添加一个中断正在显示您的 UIWebView:

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration

然后您可以单步执行并希望发现您的 UIWebView 子类有什么问题。

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

GDB Pause Execution Button

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

祝你好运!

关于ios - UIWebView 在 webViewDidStartLoad 之后卡住了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7999486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com