Я пишу функцию по нажатию кнопки в моем файле TypeScript.
<button (click)="invokeMessage()">Submit</button>
invokeMessage() {
const text = 'Hello iOS!';
this.swiftMethod(text);
}
swiftMethod(text: string) { }
Мне нужно вызвать эту функцию "swiftMethod ()" в swift. Но не получая обратного вызова при использовании вышеуказанного кода.
Однако я могу добиться этого с помощью JavaScript:
<html>
<title>
my title
</title>
<head>
<script>
function invokeMessage() {
var inputName = document.getElementById('name').value
swiftMethod(inputName)
}
</script>
</head>
<body>
<button onclick='invokeMessage()'>Submit</button>
<input type='text' name='firstname' id='name' value='Jamie'><br>
</body>
</html>
Swift Code:
extension ViewController: UIWebViewDelegate {
func webViewDidFinishLoad(_ webView: UIWebView) {
print("text")
let ctx = webView.value(forKeyPath: "documentView.webView.mainFrame.javaScriptContext") as! JSContext
let swiftMethod: @convention(block) (String) -> () = { email in
print("Got Callback email = \(email) ")
}
ctx.setObject(unsafeBitCast(swiftMethod, to: AnyObject.self), forKeyedSubscript: "swiftMethod" as (NSCopying & NSObjectProtocol)?)
}
}
Как написать мою функцию в TypeScript?