Існує кілька бібліотек, але я не використовував жодної з них у великих проектах, тому ви можете спробувати їх:
-
Однак я думаю, що це щось досить просте, що ви можете спробувати самі. Я особисто робив саме це, коли мені потрібно було це робити. Ви також можете створити просту бібліотеку, яка відповідає вашим потребам.
1. Виконайте методи JS від Objective-C
Це дійсно лише один рядок коду.
NSString *returnvalue = [webView stringByEvaluatingJavaScriptFromString:@"your javascript code string here"];
Детальніше про офіційну документацію UIWebView .
2. Виконати методи Objective-C з JS
На жаль, це трохи складніше, оскільки не існує того самого властивості windowScriptObject (і класу), який існує на Mac OSX, що дозволяє повноцінно спілкуватися між ними.
Однак ви можете легко зателефонувати за допомогою спеціальних URL-адрес JavaScript, наприклад:
window.location = yourscheme://callfunction/parameter1/parameter2?parameter3=value
І перехопіть це від Objective-C з цим:
- (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
}
}
Це не так чисто, як це повинно бути (або за допомогою windowScriptObject), але це працює.
3. Прослуховуйте рідні події JS від Objective-C (наприклад, DOM готовий захід)
З наведеного вище пояснення ви бачите, що якщо ви хочете це зробити, вам потрібно створити якийсь код JavaScript, приєднати його до події, яку ви хочете відстежувати, і викликати правильний window.location
виклик, який слід перехопити.
Знову ж таки, не чисто, як це має бути, але це працює.