自定义NSURLProtocol不在第二个webview中使用

我已经将子类NSURLProtocol注册到了didFinishLaunchingWithOptions并使用以下代码进行注册:

+ (void) registerProtocol 
{
   static BOOL registered = NO;

   if (!registered) 
   {
      [NSURLProtocol registerClass:[MyURLProtocol class]];
      registered = YES;
   }
}

对于我的应用程序中的第一个UIWebView (在主窗口中),方法canInitWithRequest被触发,并且我可以执行我的自定义代码。

不过,我有第二个UIWebView ,这是在应用程序中的某个点(模态地呈现)推送的UIViewController中。 canInitWithRequest不会被调用第二个UIWebView ,因此我不能执行我的自定义代码。 在创建UIWebView两个实例后注册协议时,情况更是如此。

有人知道为什么

d'oh! 我刚刚发现它只是在第二个webview中加载的JavaScript中的一个普通错误:(现在在两个webviews中都像是魅力一样!


不确定这是否与您的情况和解决方案有关,但发布了记录。 经过大量的试验和磨难后发现,如果您希望多次发送相同的URL,则向NSURLProtocol的子类拦截的目标c发送消息的ajax调用应将缓存设置为false。 像这样:

$.ajax({
       url:"atavistcommand://" + name,
       data:JSON.stringify(data),
       type:"GET",
       processData:false,
       cache:false )};

如果cache = true,那么objective c将永远不会在同一个url上接收到后续请求。

链接地址: http://www.djcxy.com/p/5925.html

上一篇: Custom NSURLProtocol not used in second webview

下一篇: type of a custom NSURLProtocol?