appeller une fonction objective-C depuis une webview
Bonjour à tous,
Est il possible d'appeler une fonction d'objective-C depuis une webview ? genre une url spéciale qui appellerait une fonction dans le code objective C ? Quand je clique sur un lieu au lieu de m'ouvrir une nouvelle page j'aimerais effectuer une action dans mon application !
Est-ce possible ?
Est il possible d'appeler une fonction d'objective-C depuis une webview ? genre une url spéciale qui appellerait une fonction dans le code objective C ? Quand je clique sur un lieu au lieu de m'ouvrir une nouvelle page j'aimerais effectuer une action dans mon application !
Est-ce possible ?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Mais tout dépend d'un certain nombre de paramètres :
- la webview est elle hébergée par l'application qui possède la fonction à appeler ?
- la page html affichée dans la webview est-elle une page que tu possèdes (que tu peux aisément modifié pour coder l'appel à Obj-C) ?
webView:shouldStartLoadWithRequest:navigationType:
Sent before a web view begins loading content. This method is optional.
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
Philippe, t'as compris son besoin.
Il veut, à partir d'une page html, pouvoir appeler du cocoa en dehors de cette page, sans être obligé de déclencher le chargement d'une autre page.
Grâce au pont Obj-C/javascript, ces 2 langages (et leur environnement afférent) peuvent se causer.
Commençons par la partie Obj-C.
J'ai un objet (que j'utilise comme contrôleur de la webView).
L'outlet vers la webView se nome wb :
Ensuite, pour la partie html (et plus spécifiquement javascript) :
Voilà !
A chaque appui sur le lien AppelCocoa dans la page html, la méthode -(void)appelCocoa de l'objet Contrôleur sera exécutée.
Enfin c'est comme cela que je comprends la doc.
[EDIT] sauf si le lien ne déclenche pas de chargement .. c'est possible cela ?
Belle possibilité.
Pour l'instant j'ai trouvé une autre méthode
Il me suffit de faire Pour appeller une fonction depuis du HTML
Pour ma part comme solution je n'aurais proposé que celle évoquée par yodark, à savoir prévoir un lien de type "toto://machin" dans ma page HTML, et faire gérer par le delegate les clics sur les liens, pour effectuer un traitement particulier si le protocole est "toto://" (et le traitement par défaut sinon)... Mais il est bon de savoir que Objective-C et Javascript peuvent interagir de manière si gracieuse aussi, ça promet des trucs sympas si on a besoin
je remonte ce sujet vieux d'1 an et demi, car je suis en plein dedans mais je n'y arrive pas !
Je charge dans mon appli une vue HTML (donc dans une webView) avec plusieurs boutons qui représentent chacun l'icône d'une application. Au clic sur une icône, je veux "emmener" l'utilisateur sur la page appleStore correspondant à l'appli. Si l'on place le lien ("http://itunes.apple.com/fr/app/nom-de-lapp/id123456789" directement dans la balise <a href=> de la page html, cela renvoie vers l'appStore version web (au sein de la webView). Hors bien entendu ce que je souhaite c'est renvoyer l'utilisateur vers l'application App Store de son iPhone (et sur la page de l'application).
La solution décrite par No ne semble être dispo que su Mac OS X (ou alors je suis vraiment une buse)
Quant à celle évoquée par yodark, je ne comprends pas son utilisation en rapport avec une UIWebView...
Quelqu'un pour m'aider s'il vous plaà®t ?
En effet la solution utilisant la méthode - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url permet de récupérer l'url à partir du moment ou le protocole est bidon. Ensuite en bidouillant j'arrive à reconstruire l'URL pour lancer l'application App Store de l'iPhone sur la bonne page de l'appli à télécharger.
Bidouille bidouille...