2012-08-25 29 views
3

在Apple的WebKit框架中,已完成加载其资源的WebView将webView:didFinishLoadForFrame:消息发送到其frameLoadDelegate。但是,这只意味着资源已被加载,而不是渲染已完成......我如何检测到WebView渲染已完成?在WebView的所有代表中,我找不到一个具有我需要的方法...如何知道WebView何时完成呈现?

+0

我无法想象现在任何计算机都无法立即呈现网页。 – TheAmateurProgrammer

+3

@theAmateurProgrammer定义“立即”并再试一次。当收到'didFinishLoadForFrame'消息时,我观察到很多情况下内容还没有在视图中呈现。 –

回答

3

我也期望在代理方法中找到所有内容,也尝试使用资源加载方法,计数加载开始&结束,但那也不可靠。没有一个stackoverflow的答案帮助了我,但有人在苹果devforums指出了什么似乎是答案。

WebView帖子还通知WebViewProgressStartedNotification,WebViewProgressEstimateChangedNotification和最相关的WebViewProgressFinishedNotification。在我的代码中,我观察通知,然后确保在下一个runloop中调用完成的方法,即。与[self performSelector:.. withDelay:0]或dispatch_async。

+0

哼,我试过'WebViewProgressFinishedNotification',但它还没有呈现。我已经考虑过等一下了,但是**保证**渲染将在下一个runloop上完成? –

+0

不,我从来没有得到官方的一句话,它似乎在我的初步测试中工作。我关于这个问题的问题在开发者大会上仍然很突出,我仍然希望能够就这个问题得出最终结论。如果它不适合你,那么这是令人失望的,而当我回过头来强调测试这部分应用程序时,我可能会看到相同的结果。 –

相关问题