Pouvez-vous intercepter NSURLRequests dans un UIWebView sans casser le bouton de retour?

Je vais avoir des problèmes pour charger HTML personnalisé dans mon UIWebView sans casser sa goBack méthode.

Ce Qui Fonctionne

Je suis d'intercepter les demandes d'URL de mon UIWebView donc je peux charger HTML personnalisé. J'ai le contrôle sur tout le HTML, donc j'ai mon application spéciale qui demande l'utilisation d'un modèle personnalisé (ie. myapp://arg1/?arg2=val) que je ne peux analyser dans webView:shouldStartLoadWithRequest:navigationType:. Je décide de ce que HTML, j'ai vraiment envie de charger et appeler loadHTMLString:baseURL et retour NO pour annuler la demande d'origine.

Ce qui Ne fonctionne pas

Ci-dessus fonctionne très bien. Le problème est que je veux profiter de la UIWebView's goBack méthode et loadRequest: semble être la seule UIWebView méthode qui ajoute à son histoire de la pile.

J'ai quelques idées, mais je ne suis pas sûr de ce qui est réalisable et comment le faire. La chose principale semble être que j'ai du renvoyer YES dans webView:shouldStartLoadWithRequest:navigationType et je dois utiliser UIWebView's loadRequest méthode.

Idée 1: Modifier NSURLRequest/Réponse:
Puis-je sous-classe NSURLRequest de façon à ce que lorsque la UIWebView en fait la demande), il n'est pas réellement faire une requête HTTP et renvoie un NSURLResponse avec mon code HTML? Ou peut-être modifier/sous-classe/ajouter une catégorie méthode de NSURLResponse en quelque sorte? J'aime l'idée d'être une vraie demande, mais je m'inquiète des Api privées et d'être rejeté à partir de l'App Store.

Idée 2: Gérer une URL personnalisée Protocole
Enregistrer une URL personnalisée protocole pour mon application répond et je peux l'avoir à retourner un légitime NSURLResponse (rempli avec mon code HTML personnalisé.)

Idée 3: Tromper le cache Créer la demande avec cette politique de cache NSURLRequestReturnCacheDataDontLoad et puis en quelque sorte obtenir mon code HTML entre les webView et le cache?

Ou peut-être que je suis sur la mauvaise voie?

source d'informationauteur zekel