Jest kilka bibliotek, ale nie korzystałem z żadnej z nich w dużych projektach, więc możesz je wypróbować:
-
Myślę jednak, że jest to coś na tyle prostego, że możesz spróbować samemu. Osobiście zrobiłem to dokładnie, kiedy musiałem to zrobić. Możesz także utworzyć prostą bibliotekę, która odpowiada Twoim potrzebom.
1. Wykonaj metody JS z Objective-C
To naprawdę tylko jedna linia kodu.
NSString *returnvalue = [webView stringByEvaluatingJavaScriptFromString:@"your javascript code string here"];
Więcej szczegółów w oficjalnej dokumentacji UIWebView .
2. Wykonaj metody Objective-C z JS
Jest to niestety nieco bardziej złożone, ponieważ nie ma tej samej właściwości (i klasy) windowScriptObject, która istnieje w systemie Mac OSX, umożliwiając pełną komunikację między nimi.
Możesz jednak łatwo dzwonić z niestandardowych adresów URL javascript, takich jak:
window.location = yourscheme://callfunction/parameter1/parameter2?parameter3=value
I przechwyć to z Objective-C tym:
- (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
}
}
Nie jest to tak czyste, jak powinno (lub przy użyciu windowScriptObject), ale działa.
3. Słuchaj natywnych zdarzeń JS z Objective-C (na przykład zdarzenia DOM ready)
Z powyższego wyjaśnienia widać, że jeśli chcesz to zrobić, musisz utworzyć kod JavaScript, dołączyć go do zdarzenia, które chcesz monitorować, i wywołać prawidłowe window.location
wywołanie, które zostanie następnie przechwycone.
Ponownie, nie jest czysty, jak powinien, ale działa.