我想知道在UIWebView
中完成页面加载的时候。我知道didStartLoad
/ didFinishLoad
outlined in here之间的“引用计数”方法,它有点适用于我,但我对此并不十分自信。当Javascript决定与ifs
交谈时,它已经长大了document.location
并且仍然很奇怪。我不清楚以下内容:
UIWebViewDelegate
它应该处理的所有权力,非常简洁并且有next to none documentation。任何人都可以确认didStartLoad
/ didFinishLoad
是真的只为“框架”调用,这意味着很可能是“框架集/框架”和“iframe”吗?didStartLoad
前面都有shouldStartLoadWithRequest
,但重定向除外。这是一种可靠的行为吗?didStartLoad
的请求是什么?因为给定的唯一上下文的[[webView request] URL]
总是返回相同的URL,即最初要求UIWebView加载的URL。答案 0 :(得分:0)
有用的答案,对吧?
显然,我认为UIWebViewDelegate
可能(应该?)对UIWebView
中发生的事情更具表现力。
我尝试观察UIWebView
活动是:
委托方法样本:
- (void)webViewDidStartLoad:(UIWebView *)webView {
[self.activityIndicator startAnimating];
}
- (void)webViewDidFinishLoad:(UIWebView *)webView {
if (!webView.loading) {
[self.activityIndicator stopAnimating];
}
}
效果很好。
我认为你应该使用你提到的JavaScript和iframe技巧来尝试这个代码。
它没有帮助,但你拥有你正在谈论的JavaScript,你也可以考虑向你的应用发送信号,以指示正在进行进一步的加载操作(比如使用自定义方案调用URL,如myApp://didStartLoadingSomethingWithJavascriptDude
和{{1 }})
答案 1 :(得分:0)
至少来自UIWebViewNavigationType
的{{1}},您可以确定当前加载是来自用户点击还是页面上发生的任何其他内容。它无法知道页面何时被加载,但您可以在用户触发新代码之前启动一些代码。它可能会有所帮助,具体取决于你必须在两页之间完成任务的性质。