2010-03-01 2 views
0

Contexte Certainsbesoin de filtrer certaines demandes de UIWebView et de les charger dans différentes UIWebViews

J'ai une application iPhone avec trois UIWebViews, chacun servant à afficher un type de page différente. (Le contenu est spécialement conçu à cet effet, ce ne sont pas de vraies pages Web.) Il existe des liens associés à chaque vue Web spécifique. Par exemple, un lien tapé dans WV1 peut avoir besoin de charger dans WV2 parce que c'est un lien de style WV2. (Les vues Web sont dans un UIScrollView paginé, que j'utilise pour faire défiler vers le webview en cours de chargement.Il peut dire quelle URL charge en fonction de son chemin.)

Il est logique pour moi d'avoir un seul délégué UIWebView qui répond à toutes URLRequests (via webView:shouldStartLoadWithRequest:navigationType) et décide d'une manière ou d'une autre de ce qui devrait charger où.

Le code HTML que je souhaite charger dans la vue Web n'est pas extrait directement d'une page. Je fais quelque chose comme [NSDictionary dictionaryWithContentsOfURL:] pour obtenir l'objet, dont une partie est le code HTML réel. (De plus, cela pourrait provenir du réseau ou d'un cache local.)

La question

Je dois annuler une demande dans un UIWebView puis charger des données arbitraires dans un autre. Comment dois-je faire la charge suivante, afin qu'elle contourne mon interception?

Devrais-je arrêter tout intercepter toutes les requêtes NSURLRequests via la méthode déléguée webview, puis envoyer une nouvelle requête NSURLRequest, qui sera réellement chargée, à la vue Web correcte? Je pensais que j'allais sous-classer NSURLRequest afin que je sois capable de dire des demandes originales séparément de mes demandes trafiquées. Mais encore une fois, je ne veux pas faire de NSURLRequests droites, je veux aller chercher un NSDictionary et utiliser l'une de ses valeurs comme HTML.

J'ai vu ce article sur le filtrage de ce qui se charge dans un UIWebView, mais je ne pense pas que ce soit exactement ce que je veux. J'essaye de travailler mon chemin à travers le URL Loading System Overview, mais il y en a beaucoup là-bas.

Répondre

0

Terminé en utilisant des schémas d'URL personnalisés pour identifier les demandes que je voulais charger par rapport à celles que je voulais gérer.

+0

Voici [une explication plus détaillée] (http://stackoverflow.com/a/9827105/168594) de la façon dont j'ai fait cela en réponse à une question similaire. – zekel