【发布时间】:2012-01-11 16:02:35
【问题描述】:
我已将NSURLProtocol 子类化并使用此代码在didFinishLaunchingWithOptions 中注册:
+ (void) registerProtocol
{
static BOOL registered = NO;
if (!registered)
{
[NSURLProtocol registerClass:[MyURLProtocol class]];
registered = YES;
}
}
对于我的应用程序中的第一个UIWebView(在主窗口中),方法canInitWithRequest 被触发,我可以执行我的自定义代码。
但是我有第二个UIWebView,它在一个UIViewController 内,它在应用程序中的某个位置被推送(以模态方式呈现)。第二个UIWebView 不会调用canInitWithRequest,因此我无法执行我的自定义代码。在创建UIWebView 的两个实例之后注册协议时也是如此。
有人知道为什么吗?
[编辑] 哦!我刚刚发现它只是在第二个 webview 中加载的 javascript 中的一个简单错误:( 现在在两个 webview 中都像魅力一样工作!
【问题讨论】:
-
问题不在于注册您的协议。您只需注册一次。我很想知道您是如何在 UIWebView 中加载您的请求的。例如,您是否正在调用 [webView loadRequest:request]。
-
实际上该请求是从 javascript/ajax 调用中触发的,我试图在 canInitWithRequest 中拦截它。适用于第一个 webview,不适用于第二个 webview :(
-
你能提供一些关于你发现的修复的细节吗?即使它是特定于您的应用程序的 js 错误。我遇到了同样的问题,我正在努力找出问题所在。
标签: ios uiwebview webkit nsurlprotocol