Para isso, basta importar o framework JavaScriptCore no seu projeto. :P
Bem, tem mais passos:
import UIKit
import JavaScriptCore
//Protocolo para externalizar a função
@objc protocol MainJS: JSExport {
//Função log
static func log(_ text: String);
}
//View Controller
class MainViewController: UIViewController, UIWebViewDelegate, MainJS
//WebView
@IBOutlet weak var webView: UIWebView!
//Implementação da função log
static func log(_ text: String) {
print("[\(Date())] - \(text)")
}
//Carregou a View? (função)
override fund viewDidLoad() {
super.viewDidLoad()
webView.delegate = self
//Cria uma página html com um botão
webView.loadHTMLString("<html><head></head><body><button onclick="native.log('teste');"></button></body></html>", baseURL: Bundle.main.bundleURL)
}
//Carregou a Página? (função)
func webViewDidFinishLoad(_ webView: UIWebView) {
//Pego o contexto javascript da webView
if let context = webView.value(forKeyPath: "documentView.webView.mainFrame.javaScriptContext") as! JSContext? {
//Executa qualquer método que esta no protocolo MainJS através do objeto "native" do javascript
//Exemplo: native.log('exemplo');
context.setObject(MainViewController.self, forKeyedSubscript: "native" as (NSCopying & NSObjectProtocol)!)
}
}
Nenhum comentário:
Postar um comentário