Birkaç kütüphane var, ancak bunların hiçbirini büyük projelerde kullanmadım, bu yüzden onları denemek isteyebilirsiniz:
-
Ancak, kendi kendinize deneyebileceğiniz kadar basit bir şey olduğunu düşünüyorum. Bunu yapmam gerektiğinde şahsen tam olarak bunu yaptım. İhtiyaçlarınıza uyan basit bir kitaplık da oluşturabilirsiniz.
1. Objective-C'den JS yöntemlerini yürütün
Bu gerçekten sadece bir satır koddur.
NSString *returnvalue = [webView stringByEvaluatingJavaScriptFromString:@"your javascript code string here"];
Resmi UIWebView Belgeleri hakkında daha fazla ayrıntı .
2. JS'den Objective-C yöntemlerini yürütün
Bu maalesef biraz daha karmaşıktır, çünkü Mac OSX'te var olan windowScriptObject özelliği (ve sınıfı) ikisi arasında tam iletişime izin veren aynı değildir.
Ancak, aşağıdaki gibi özel javascript URL'lerinden kolayca arayabilirsiniz:
window.location = yourscheme://callfunction/parameter1/parameter2?parameter3=value
Ve bununla Objective-C'den onu durdurun:
- (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
}
}
Bu olması gerektiği kadar temiz değil (veya windowScriptObject kullanarak) ama işe yarıyor.
3. Objective-C'den yerel JS olaylarını dinleyin (örneğin, DOM'a hazır olay)
Yukarıdaki açıklamadan, bunu yapmak istiyorsanız, bazı JavaScript kodu oluşturmanız, onu izlemek istediğiniz olaya eklemeniz ve window.location
daha sonra yakalanması için doğru çağrıyı çağırmanız gerektiğini görüyorsunuz .
Yine olması gerektiği gibi temiz değil ama işe yarıyor.