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?
Réponses
Trop de publicités?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.
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.
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.