Есть несколько библиотек, но я не использовал ни одну из них в больших проектах, поэтому вы можете попробовать их:
-
Однако я думаю, что это достаточно просто, чтобы вы могли попробовать сами.Я лично сделал именно это, когда мне нужно было это сделать.Вы также можете создать простую библиотеку, которая соответствует вашим потребностям.
1.Выполнить JS-методы из Objective-C
Это всего лишь одна строка кода.
NSString *returnvalue = [webView stringByEvaluatingJavaScriptFromString:@"your javascript code string here"];
Подробнее об официальной документации UIWebView .
2.Выполнить методы Objective C из JS
Это, к сожалению, немного сложнее, потому что в Mac OSX нет того свойства (и класса) windowScriptObject, которое бы обеспечивало полную связь между ними.
Тем не менее, вы можете легко позвонить с пользовательских 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
вызов, который затем будет перехвачен.
Опять не чисто, как должно быть, но он работает.