我正在使用Web编程语言构建应用程序,并希望在用户单击HTML按钮时启动相机。由于我希望相机视图是自定义视图,因此需要使用Swift进行设计。因此,当用户单击此HTML按钮时,我想在Swift中“捕获”此单击,以便启动本机相机视图。
我知道可以用WKWebview完成,但是我真的不知道该怎么做。
例如,我的Javascript(jQuery)代码可能如下所示:
// User clicks to start the native camera with Swift $(".camera_button").click(function() { // Function to call the camera view from JS to Swift });
你能帮我做到吗?
谢谢。
根据@Alex Pelletier的回答(对我有很大帮助),这是我的问题的解决方案。
在我的“ loadView()”函数中,这是我拥有的:
let contentController = WKUserContentController(); contentController.addScriptMessageHandler( self, name: "callbackHandler" ) let config = WKWebViewConfiguration() config.userContentController = contentController webView = WKWebView(frame: CGRectZero, configuration: config) webView.navigationDelegate = self view = webView
我处理发送到Swift的Javascript事件的函数:
func userContentController(userContentController: WKUserContentController, didReceiveScriptMessage message: WKScriptMessage) { if(message.name == "callbackHandler") { print("Launch my Native Camera") } }
…最后,当我的相机按钮(以HTML格式)单击时,我的Javascript(jQuery)代码:
$(document).ready(function() { function callNativeApp () { try { webkit.messageHandlers.callbackHandler.postMessage("camera"); } catch(err) { console.log('The native context does not exist yet'); } } $(".menu-camera-icon").click(function() { callNativeApp(); }); });
我希望它会对其他人有所帮助:-)!