我正在使用一个广泛使用 UIWebViews 来显示从 Web 加载的内容的应用程序。大多数时候这很好用,但每隔一段时间(尤其是在 3G 上),连接问题就会中断加载。
当它是主 webview 时,这不是问题,因为 webView:didFailLoadWithError: 在委托上调用。但是,页面 HTML 包含一些引用其他 Web 资源的标签,并且在极少数情况下,初始请求会通过,但其中一个后续请求会失败。
似乎我应该能够使用 NSURLProtocol 子类触发对这些故障的处理,但是在 initWithRequest:cachedResponse:client: 中,我找不到确定哪个 UIWebView 触发了请求的方法(以便我可以通知它委托向用户显示某些内容)。我也找不到在其中一个请求被触发时调用的委托方法(webView:shouldStartLoadWithRequest:navigationType: 只为 window.location.href 分配和类似的主文档请求调用,而不是辅助请求)。检测其中一个辅助请求失败(以及它试图加载哪个 URL,以及哪个 UIWebView 正在制作它)的最简单方法是什么?