【问题标题】:detect when UIWebView finished loading without a delegate在没有委托的情况下检测 UIWebView 何时完成加载
【发布时间】:2012-06-07 18:46:08
【问题描述】:

是否可以执行:

[UIWebView loadRequest:[NSURLRequest requestWithURL:url]];

以我知道 UIWebView 何时完成加载 NSURL 以便我可以继续进行进一步处理的方式?除了使用委托之外。如果不是,代表工作的条件是什么。

感谢您提供任何提示/想法

进一步解释。我有这段代码在测试应用程序中对我有用:

webview = [[UIWebView alloc] init];
webview.delegate = self;
[webview loadRequest:[NSURLRequest requestWithURL:url]]; 

在我的测试应用的标题中:

#import <UIKit/UIKit.h>
@interface ViewController : UIViewController <UIWebViewDelegate> {
UIWebView   *webview;

}

我试图在一个我不完全理解的非常复杂的环境中复制它。 我不知道该放在哪里,因为我不清楚。接口定义为:

@interface Stream (Extension)
@end

它还有四个接口在后面的头文件中定义。

在我的实现中,我得到“未声明的标识符自我”

【问题讨论】:

  • 为什么不想使用委托?
  • 第一个 sn-p 代码与文件中显示的不完全相同,是吗?即 #import 之后出现的 webView 行?
  • 不,抱歉。错误的部分,现已修复。
  • 显示更多将 self 分配给委托的代码。这是用什么方法?你是说ViewController接口是在Stream接口中定义的?
  • 不,任何地方都没有 ViewController 接口,因此据我所知,我在使用委托和需要添加 UIWebView 的方法方面遇到的问题是没有特定的接口实现。它位于两组@implementation...@end 之间

标签: objective-c ios uiwebview


【解决方案1】:

如果您使用 NSURLProtocol 拦截网络流量,您可以知道 Web 视图何时完成获取 NSURL 的内容和页面中的任何嵌入内容请求(但您必须提前知道 html 页面是否将发出请求以获取即图像)。

但是您无法检测到 UIWebView 何时加载了 dom 或完成了页面显示 没有代表(出于好奇,我想知道您为什么要问这样的问题)。

【讨论】:

  • 谢谢。因为我正在使用我最初没有编写的旧(和复杂)代码......而且因为我仍然是一个菜鸟,无法实现委托方法。有没有办法以某种自包含的方式实现这一点,所有接口定义都独立于其他代码。这是一次性的事情。使用 NSURL 加载 UIWebView,等待它完成加载,然后访问它的属性以进行进一步处理
  • 不确定您的问题是什么,请您改写一下或说明您的意思。为 UIWebView 实现代理非常简单,您在哪些部分遇到了问题?
  • 在顶部的原始问题中添加了更多信息。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-30
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多