Setzen Sie die Methode objective C von JavaScript mit JavaScriptCore in iOS 7 in ViewControllern aus

8

Ich lade eine URL in die Webansicht, die unter HTML und Javascript Funktionsaufruf hat. Jetzt schaue ich mir an, wenn der Benutzer den Submit Button im Webview berührt, sollte er jede Methode in ViewController aufrufen. Webview sollte URL laden (Webview Delegate) ist ein Ansatz, aber gibt es einen neuen Weg, um zu wissen, wenn JavaScript-Funktion von Webview aufgerufen wird, sollten ViewController informieren oder jede Methode in View-Controller auslösen.

Ich suche nicht nach dieser Lösung, die wir brauchen

%Vor%

Wir müssen zu einer falschen URL von Ihrer JavaScript-Methode wie

navigieren %Vor%

bei einem Klick auf die Schaltfläche oder die gewünschte Aktion.

Aber gibt es eine neue Möglichkeit von JavaScriptCore, um dasselbe zu erreichen.

    
user3283486 07.02.2014, 11:06
quelle

1 Antwort

21

Die Objective-C-Schnittstelle im JavascriptCore-Framework, die mit iOS 7 eingeführt wurde, erlaubt den Aufruf von Objective-C-Methoden aus Javascript. Eine Einführung in diese Funktionen finden Sie in der WWDC-Einführung 2013 "Integration von JavaScript in native Apps" im Apple-Entwickler-Netzwerk: Ссылка

Es hat einen kurzen Abschnitt gegen Ende auf WebView (MacOs nur nicht iOS)

Der folgende Beispielcode zeigt, wie Sie das implementieren, was Sie für iOS wollen.

%Vor%

Zu beachten:

  • Der Zugriff auf den JSContext eines UIWebView ist nicht dokumentiert. Zwei Techniken sind bekannt (siehe Greifen Sie auf die JavaScriptCore-Engine eines UIWebView zu ) . Die erste Technik wird hier verwendet.
  • Sie müssen die JavaScript-Funktion "submitButton" nicht innerhalb der Seite definieren. Sie definieren die Funktion von Objective-C mit dem JSContext
  • von webView
  • Wenn eine Seite in einer Webansicht geladen wird, wird ihr JSContext ersetzt. Daher sollten Sie einen Delegaten für das UIWebView implementieren und Ihren Objective-C-Callback in Ihrer Implementierung des Selektors für -webViewDidFinishLoad definieren:
  • Ich habe angenommen, dass Sie Parameter an diesen Callback übergeben möchten, daher habe ich einen Beispielparameter gezeigt. Obwohl dies nicht in dem oben erwähnten Video-Tutorial (oder dem PDF-Äquivalent) behandelt wird, zeigt JSValue.h, dass JavascriptCore eine integrierte Konvertierung zwischen den folgenden Objective-C- und Javascript-Typen bietet:

.

%Vor%     
Mike 08.02.2014, 16:13
quelle