Es gibt einige Bibliotheken, aber ich habe keine davon in großen Projekten verwendet. Vielleicht möchten Sie sie ausprobieren:
- -
Ich denke jedoch, dass es so einfach ist, dass Sie es selbst ausprobieren können. Ich persönlich habe genau das getan, als ich das tun musste. Sie können auch eine einfache Bibliothek erstellen, die Ihren Anforderungen entspricht.
1. Führen Sie JS-Methoden von Objective-C aus
Dies ist wirklich nur eine Codezeile.
NSString *returnvalue = [webView stringByEvaluatingJavaScriptFromString:@"your javascript code string here"];
Weitere Details finden Sie in der offiziellen UIWebView-Dokumentation .
2. Führen Sie Objective-C-Methoden von JS aus
Dies ist leider etwas komplexer, da unter Mac OS X nicht dieselbe windowScriptObject-Eigenschaft (und -Klasse) vorhanden ist, die eine vollständige Kommunikation zwischen beiden ermöglicht.
Sie können jedoch problemlos über benutzerdefinierte Javascript-URLs aufrufen, z.
window.location = yourscheme://callfunction/parameter1/parameter2?parameter3=value
Und fangen Sie es von Objective-C damit ab:
- (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
}
}
Dies ist nicht so sauber wie es sein sollte (oder mit windowScriptObject), aber es funktioniert.
3. Hören Sie native JS-Ereignisse von Objective-C ab (z. B. DOM-fähiges Ereignis).
Aus der obigen Erklärung geht hervor, dass Sie, wenn Sie dies tun möchten, JavaScript-Code erstellen, ihn an das zu überwachende Ereignis anhängen und den richtigen window.location
Aufruf aufrufen müssen, der dann abgefangen werden soll.
Wieder nicht sauber wie es sein sollte, aber es funktioniert.