У UIWebView на iOS есть методы для добавления интерфейса к DOM?

Для android существует метод с именем addJavascriptInterface(), который импортирует объект JAVA для Android в контекст Javascript. Есть ли какой-либо его эквивалент на iOS? Я рассмотрел некоторые из подобных вопросов:
androids-addjavascriptinterface-equivalent-in-ios
calling-objective-c-function-from-javascript-in-ios-applications
Но я не смог найти правильное решение моего вопроса.

function initiateAddCall(){
        var locus = reader.getPlace().getLocus();
        RoomHelper.postReaderLocus(JSON.stringify(locus));
}

RoomHelper - обработчик javascript, который я использую. Есть ли способ реализовать это (Зарегистрировать обработчик/интерфейс javascript в UIWebView iOS) в UIWebView iOS.

Ответы

Ответ 1

Я просто использовал EasyJSWebView и работал очень хорошо. Существуют и другие решения, такие как WebViewJavascriptBridge, но EasyJSWebView был проще в использовании.

RoomHelper *roomHelper = [RoomHelper new];
[self.myWebView addJavascriptInterfaces:interface WithName:@"RoomHelper"];
[self.myWebView injectJS:webView];

в javascript, который вы вызываете:

RoomHelper.test()

а в RoomHelper вы реализуете метод test

RoomHelper.h:

@interface RoomHelper : NSObject

- (void) test;

@end

Ответ 2

Придется использовать это для собственного проекта приложения, где я использовал D3.JS для отображения графиков. Используемый ниже код для вызова функции JS

    NSString *jsString = [NSString stringWithFormat:@"showLegendGraphsFromDevice('%@',%d)",sectionName, position];
    [_webView stringByEvaluatingJavaScriptFromString:jsString];

Здесь

function showLegendGraphsFromDevice(name, position) 

- функция JS

Здесь мы создаем правильную строку JS с необходимыми кавычками.