35 votes

Javascript dans UIWebView rappel vers C / Objective-C

Existe-t-il un moyen d'obtenir un rappel vers Objective-C lorsqu'un certain événement a été détecté dans un UIWebView? Javascript peut-il envoyer un rappel à Objective-C?

31voto

bpapa Points 10188

Dans votre UIWebView délégué, de fournir une implémentation pour webView:shouldStartLoadWithRequest:navigationType:

Dans votre code HTML ou Javascript, des fichiers, ajouter des fonctions envoyer des Url à un modèle personnalisé (pour des raisons de lisibilité, le modèle personnalisé n'est pas obligatoire). Toutes les Url envoyé sera transmise à votre Objectif-C méthode de la mise en œuvre, et ensuite vous pouvez faire ce que vous souhaitez.

31voto

geon Points 2187

Juste pour illustrer la solution par "bpapa" avec le code actuel:

ATTENTION: code non testé

Implémentez cette méthode dans le délégué de UIWebView ...

 -(BOOL) webView:(UIWebView *)inWeb shouldStartLoadWithRequest:(NSURLRequest *)inRequest navigationType:(UIWebViewNavigationType)inType {
    if ( [[[inRequest URL] scheme] isEqualToString:@"callback"] ) {

        // Do something interesting...

        return NO;
    }

    return YES;
}
 

... puis mettez un lien dans le webwieb comme ceci:

 <a href="callback:whatever">Click me</a>
 

Et cela devrait activer votre code de rappel. Évidemment, vous pouvez le déclencher avec un javascript plutôt qu'un simple lien.

0voto

Piterwilson Points 153

Pour compléter la réponse de bpapa, voici un exemple de travail documenté:

https://github.com/piterwilson/WebViewTest

Voir / docs / pour une documentation complète.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X