iOS日常

JS与Swift的交互

2017-12-20  本文已影响15人  BigBowen

基础知识:

在平时展示复杂的富文本的时候,我们可以通过UIWebView来实现.


Snip20171220_11.png

如果我们需要监听富文本的点击并做相应的处理,就需要用到JS与Swift的交互了.
大致流程:
Swift端:

JS端:

应用:

如上图,点击图片时方法图片:

*声明协议,协议要遵守JSExport,这样才可以把协议内的方法暴露在JS中.

import JavaScriptCore
import WebKit
import Foundation
@objc protocol JavaScriptSwiftDelegate:JSExport
{
    func clickImage(_ imageUrl: String)
}
    func clickImage(_ imageUrl: String) {
        debugPrint("放大图片")
    }
var jsContext = JSContext()
func webViewDidFinishLoad(_ webView: UIWebView) {
        self.jsContext = webView.value(forKeyPath: "documentView.webView.mainFrame.javaScriptContext") as! JSContext?
        self.jsContext?.setObject(self, forKeyedSubscript: "control" as (NSCopying & NSObjectProtocol)!)
 }
RE.setImageClick = function(){
    var objs = document.getElementsByTagName("img");
    for(var i=0;i<objs.length;i++){
        objs[i].onclick=function(){
            window.control.clickImage(this.src);
        }
    }
}

效果如下(点击图片放大的代码没有放上来):


数字1.gif
上一篇 下一篇

猜你喜欢

热点阅读