Swift - 简单的原生与网页交互

Swift - 简单的原生与网页交互,第1张

概述class WebViewViewController: UIViewController ,WKScriptMessageHandler{ var webView = WKWebView() override func viewDidLoad() { super.viewDidLoad() self.view.backgroun
class WebVIEwVIEwController: UIVIEwController,WKScriptMessageHandler{        var webVIEw = WKWebVIEw()        overrIDe func vIEwDIDLoad() {        super.vIEwDIDLoad()        self.vIEw.backgroundcolor = UIcolor.white        self.navigationItem.Title = "webVIEw详情"        self.configUI()    }    //加载UI    func configUI(){                let configuration = WKWebVIEwConfiguration.init()        let userContentController = WKUserContentController.init()        //设置网页与原生交互的参数        userContentController.add(self,name: "Share")//通讯录        userContentController.add(self,name: "Camera")//相机        userContentController.add(self,name: "Test")//测试        configuration.userContentController = userContentController                let preferences = WKPreferences.init()        /**         阻止 Js 自动调动window.open方法打开一个新的webVIEw;         会对Js 的window.open("../index.HTML");产生影响,Js 调用window.open打开新窗口的时候 WKWebVIEw 会调用WKUIDelegate的代理方法createWebVIEwWithConfiguration,如果这个代理没实现,设置了JavaScriptCanopenwindowsautomatically = YES 也没什么用         */        preferences.JavaScriptCanopenwindowsautomatically = true                preferences.minimumFontSize = 40.0                configuration.preferences = preferences                self.webVIEw = WKWebVIEw.init(frame: self.vIEw.frame,configuration: configuration);//设置webvIEw        //        self.webVIEw.uIDelegate = self // 设置代理                self.webVIEw.load(URLRequest.init(url: URL.init(string: "http://192.168.0.206:9626/WKWebVIEwMessageHandler.HTML")!))//加载网页                self.vIEw.addSubvIEw(self.webVIEw)//添加父视图                    }    //    func webVIEw(_ webVIEw: WKWebVIEw,runJavaScriptAlertPanelWithMessage message: String,initiatedByFrame frame: WKFrameInfo,completionHandler: @escaPing () -> VoID) {//        //    }        overrIDe func dIDReceiveMemoryWarning() {        super.dIDReceiveMemoryWarning()    }        //WKScriptMessageHandler的协议方法:Js调用OC时会执行此方法    //   userContentController  webvIEw中配置的userContentController 信息    //    @param message                Js执行传递的消息    func userContentController(_ userContentController: WKUserContentController,dIDReceive message: WKScriptMessage) {        //        print(message.body)//网页传给原生的内容//        print(message.frameInfo.request.url!)//请求网页的地址//        print(message.name)//网页与原生定义的同一字段根据不同的字段处理不同的事件        switch message.name {        case "Test":            print("测试")            self.webVIEw.evaluateJavaScript("testResult('\(message.frameInfo.request.url!)')",completionHandler: { (res,err) in            })        case "Share":            print("选择通讯录")        case "Camera":            print("选择相册")        default:            break        }            }}
总结

以上是内存溢出为你收集整理的Swift - 简单的原生与网页交互全部内容,希望文章能够帮你解决Swift - 简单的原生与网页交互所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1060330.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存