Ci sono alcune librerie, ma non ho usato nessuna di queste in grandi progetti, quindi potresti volerle provare:
-
Tuttavia, penso che sia qualcosa di abbastanza semplice che potresti provarlo tu stesso. Personalmente ho fatto esattamente questo quando avevo bisogno di farlo. Potresti anche creare una semplice libreria adatta alle tue esigenze.
1. Eseguire i metodi JS da Objective-C
Questa è davvero solo una riga di codice.
NSString *returnvalue = [webView stringByEvaluatingJavaScriptFromString:@"your javascript code string here"];
Maggiori dettagli sulla documentazione ufficiale di UIWebView .
2. Eseguire i metodi Objective-C da JS
Questo è purtroppo leggermente più complesso, perché non esiste la stessa proprietà (e classe) windowScriptObject che esiste su Mac OSX che consente la comunicazione completa tra i due.
Tuttavia, puoi facilmente chiamare da URL personalizzati javascript, come:
window.location = yourscheme://callfunction/parameter1/parameter2?parameter3=value
E intercettalo da Objective-C con questo:
- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType {
NSURL *URL = [request URL];
if ([[URL scheme] isEqualToString:@"yourscheme"]) {
// parse the rest of the URL object and execute functions
}
}
Non è così pulito come dovrebbe essere (o usando windowScriptObject) ma funziona.
3. Ascolta eventi JS nativi da Objective-C (ad esempio evento pronto per DOM)
Dalla spiegazione sopra, vedi che se vuoi farlo, devi creare del codice JavaScript, allegarlo all'evento che vuoi monitorare e chiamare la window.location
chiamata corretta per essere poi intercettato.
Di nuovo, non è pulito come dovrebbe essere, ma funziona.