gpt4 book ai didi

cocoa-touch - 如何在cocoa中调用web view的webviewdidfinishload委托(delegate)方法?

转载 作者:行者123 更新时间:2023-12-03 16:58:35 24 4
gpt4 key购买 nike

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

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

最佳答案

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

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

This method is not getting called.

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

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

UIWebView 是 WebView 的一个非常精简的版本。特别是,UIWebView 只有一种委托(delegate)协议(protocol),其中 webViewDidFinishLoad: 是其方法之一,而 WebView 则有不少于6 个委托(delegate)协议(protocol)。

webViewDidFinishLoad: 仅存在于 iOS 应用程序的 UIKit 框架中的 UIWebViewDelegate 协议(protocol)中。在 Mac 应用程序中实现它不会有任何效果,因为没有任何东西会调用它。

Please tell me how to call the method …

这对你没有任何好处,因为实现它的全部目的是找出加载何时完成。为了让您自己调用它,您需要知道何时调用它,即加载何时完成。要知道这一点,您需要被 WebKit 告知加载已完成。正如他们用逻辑所说,这就是 begging the question .

正确的解决方案是将正确的委托(delegate)设置为符合正确委托(delegate)协议(protocol)并实现正确方法的对象。正确的代表是 the WebView's frame load delegate 。因此,正确的协议(protocol)是 the WebViewFrameLoadDelegate protocol 。您的帧加载委托(delegate)必须实现的该协议(protocol)中的正确方法是 the webView:didFinishLoadForFrame: method .

<小时/>

遇到同样问题(webViewDidFinishLoad: 未调用)的 Cocoa Touch 程序员应确保将其 UIWebView 的委托(delegate)设置为正确的对象。如果您在代码中进行设置,请确保您正在与正确的 Web View 进行对话,即,您与 Web View 的导出已连接(如果它位于 nib 或 Storyboard 中),您正在加载 nib 或 Storyboard(如果它在一个 Storyboard中),并且您不会使用不同的 Web View 破坏 socket 的值(一个来自 Nib ,然后一个在代码中创建,反之亦然)。

关于cocoa-touch - 如何在cocoa中调用web view的webviewdidfinishload委托(delegate)方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10748685/

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