UIWebView et fichiers HTML locaux
Paisible.fr
Membre
Bonjour,
J'ai une application avec une UIWebView. Je charge par programmation une page html contenu dans les ressources de l'application. Aucun problème à ce niveau là . Ma page est chargé et s'affiche.
En revanche quand je clique sur lien de la page pointant sur une autre page contenu dans les ressources de mon bundle rien ne se passe. J'ai une page blanche, pas de 404 ou d'infos pouvant m'aider.
Je précise que je travaille pour le moment avec le simulateur iPhone de xCode.
J'ai une application avec une UIWebView. Je charge par programmation une page html contenu dans les ressources de l'application. Aucun problème à ce niveau là . Ma page est chargé et s'affiche.
En revanche quand je clique sur lien de la page pointant sur une autre page contenu dans les ressources de mon bundle rien ne se passe. J'ai une page blanche, pas de 404 ou d'infos pouvant m'aider.
Je précise que je travaille pour le moment avec le simulateur iPhone de xCode.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Voir ce post
Ok merci : je vais regarder cela de plus prêt cependant
1) le /Documents semble êtr destiné plutôt aux documents étant amenés à être ajoutés, modifiés, supprimer, etc... au fil du temps. Moi il s'agit plutôt du contenu de mon application
2) J'arrive à loader dans le UIWebView le fichier HTML contenu dans les ressources par programmation.
3) Si dans ma page je met un "<a href="http://www.apple.com">apple</a>" cela fonctionne. Je voudrais la même chose en local. J'ai essayer de faire : href="//mapage.htm", href="/mapage.htm" et href="file://mapage.htm" sans plus de succes.
4) J'arrive pas à avoir de trace sur ce qu'il se passe pour essayer de trouver une solution. Rien dans la console. J'ai mis également dans l'émulateur iPhone l'option développeur de safari sur active mais j' ai rien dans mon application qui apparait. Dans Safari la zone développeur apparait en revanche.
C'est à l'exécution que les contraintes de localisation des fichiers sont définies strictement par Apple.
Donc cela signifie que si dans ma UIWebView j'ai le code suivant :
Il va aller chercher en priorité : .../Documents/sommaire.htm ?
Essaie avec l'url complète construite comme indiquée sur le post cité.
ou bien confie au delegate de ta WebView le soin d'interpréter une telle requête.
J'ai enfin trouvé un peu de temps pour faire de nouveaux tests.
Au lancement de l'application je copie les fichiers de mes ressources dans le dossiers "/Documents" conseillé.
J'arrive toujours à ouvrir ma première page, mais impossible de faire fonctionner les liens : toujours le même résultat.
J'ai donc implémenté les choses suivantes :
Je passe sans problème dans les "webViewDidFinishLoad" et "webViewDidStartLoad".
En revanche je passe dans le "shouldStartLoadWithRequest" uniquement pour les urls pointant vers le net et pas des fichiers.
en
Je rentre alors dans le "shouldStartLoadWithRequest". Avec ça je devrais pouvoir prendre la main et peut-être à faire ce que je souhaite. :kicking:
Reste à trouver le temps pour pousser l'investigation à son terme :-\\
Logiquement peut-être, en pratique NON
Dans ma page html j'ai :
Cela semble conforme à ce qu'indique la documentation d'apple
Donc j'implement edans mon delegate la chose suivante (salement) :
Et là j'ai une erreur.
Poussant la curiosité j'implémente :
Qui me donne :
Si j'ouvre dans safari Mac ou Emulateur iPhone l'url ci-dessous elle fonctionne :
C'est pas lié aux deux barres au lieu de trois barres ?
file:// et file:///
Non, j'ai essaye les deux cas. :-\\
Si quelqu'un à une autre idée ou suggestion je suis preneur.
Je pensais qu'une chose aussi basique puisse poser autant de problème.
Quand tu dis "je clique sur lien de la page pointant sur une autre page contenu dans les ressources de mon bundle", comment est ce lien ?
Je suppose que c'est une balise <a>, mais comment écris tu le contenu de l'attribut href ?
Peux tu nous mettre un extrait ?
J'ai trouvé un début de solution.
Voici le code (attention : c'est assez sale) :
Il reste quelques problèmes :
Merci à tous ceux qui m'ont aidés. J'espère que ce poste aidera d'autre personnes par la suite.