1

我正在使用 WebView 的 WebViewDidFinishLoad 委托方法,但它没有被调用。每当我在 WebView 中运行应用程序并加载请求时。请告诉我,如何调用该方法以及我需要与文件所有者连接的委托。

任何帮助将不胜感激。提前致谢。

4

3 回答 3

2

您在对另一个答案的评论中说:

- (void)webViewDidFinishLoad:(WebView *)webView{ NSLog(@"hello");}

这个方法没有被调用。

那是因为没有这样的方法。

WebView 和 UIWebView 不是一回事。前者在 Mac 上的 WebKit 框架中;后者在 iOS 上的 UIKit 框架中。WebView 在 iOS 上不可用,UIWebView 在 Mac 上不可用。

UIWebView 是一个非常精简的 WebView 版本。特别是,UIWebView 只有一个委托协议,其中webViewDidFinishLoad:一种是它的方法,而 WebView 有不少于六个委托协议。

webViewDidFinishLoad:仅存在于 UIWebViewDelegate 协议中,在 iOS 应用的 UIKit 框架中。在 Mac 应用程序中实现它将一事无成,因为不会调用它。

请告诉我如何调用该方法...</p>

这对你没有好处,因为实现它的全部目的是找出负载何时完成。为了让您自己调用它,您需要知道何时调用它——即,何时加载完成。要知道这一点,您需要被告知 WebKit 已完成加载。正如他们在逻辑上所说,这是在乞求问题

正确的解决方案是将正确的委托设置为符合正确委托协议并实现正确方法的对象。正确的委托是WebView 的帧加载委托。因此,正确的协议是WebViewFrameLoadDelegate 协议。该协议中您的帧加载委托必须实现的正确方法webView:didFinishLoadForFrame:method


有同样问题(webViewDidFinishLoad:没有被调用)的 Cocoa Touch 程序员应该确保他们的 UIWebView 的委托设置为正确的对象。如果您在代码中设置它,请确保您正在与正确的 Web 视图对话——即,您的 Web 视图的出口已连接(如果它在 nib 或 storyboard 中),您正在加载 nib 或故事板(如果它在一个中),并且您不会使用不同的 Web 视图(一个来自 nib,然后一个在代码中创建,反之亦然)破坏插座的价值。

于 2012-05-25T05:27:51.780 回答
1

尝试添加(并myUIWebView用您的 UIWebView 插座名称替换):

[myUIWebView setDelegate:self];

并在头文件中添加<UIWebViewDelegate>,因此您可以使用以下方法:

-(void)webViewDidStartLoad:(UIWebView *)webView {

}
-(void)webViewDidFinishLoad:(UIWebView *)webView{

}
于 2012-05-25T05:02:19.363 回答
0

Webview 的第一个绑定 ResourceDelegate 与文件所有者

(void)webView:(WebView *)sender resource:(id)identifier didFinishLoadingFromDataSource:(WebDataSource *)dataSource

这对我来说非常有用。

于 2013-04-09T13:04:16.657 回答