J'ai NSURLProtocol
et enregistré sous-classé dans didFinishLaunchingWithOptions
avec ce code:personnalisé NSURLProtocol pas utilisé dans la deuxième WebView
+ (void) registerProtocol
{
static BOOL registered = NO;
if (!registered)
{
[NSURLProtocol registerClass:[MyURLProtocol class]];
registered = YES;
}
}
Pour la première UIWebView
dans mon application (dans la fenêtre principale) la méthode canInitWithRequest
est déclenchée, et Je peux exécuter mon code personnalisé.
Cependant j'ai un second UIWebView
, c'est-à-dire dans un UIViewController
qui est poussé à un certain point dans l'application (présenté modalement). Le canInitWithRequest
ne sera pas appelé pour le deuxième UIWebView
, donc je ne peux pas exécuter mon code personnalisé. Cela est également vrai lorsque le protocole est enregistré après que les deux instances UIWebView
ont été créées.
Quelqu'un sait pourquoi?
[edit] d'oh! Je viens de trouver que c'était une simple erreur dans le javascript qui est chargé dans la deuxième webview :( fonctionne comme un charme dans les deux webviews maintenant!
Le problème n'est pas d'enregistrer votre protocole. Vous avez seulement besoin de l'enregistrer une fois. Je serais curieux de voir comment vous chargez vos requêtes dans UIWebView. Par exemple, appelez-vous [webView loadRequest: request]. – jimmyg
effectivement la demande est déclenchée à partir d'un appel javascript/ajax, et j'essaye de l'intercepter dans canInitWithRequest. fonctionne pour le premier webview, ne fonctionne pas pour le deuxième webview :( – user826955
Pouvez-vous fournir des détails sur le correctif que vous avez découvert? Même si c'est une erreur js qui est spécifique à votre App. Je rencontre le même problème et je tire mes cheveux en essayant de comprendre le problème. –