WKWebView与Web JS简单交互与解耦

2020-05-22  本文已影响0人  livesxu

OC调用JS

- (void)evaluateJavaScript:(NSString*)javaScriptString completionHandler:(void(^_Nullable)(_Nullableid,NSError*_Nullableerror))completionHandler;

示例:

oc to js

JS调用OC(我称之为JS事件截取)

1.添加事件监听- (void)addScriptMessageHandler:(id)scriptMessageHandler name:(NSString *)name;

name就是你要截取的事件名

2.要实现一个delegate WKScriptMessageHandler

- (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message;

3.需要移除监听- (void)removeScriptMessageHandlerForName:(NSString *)name;

添加 回调 移除

跟KVO相像,但是这个比KVO坑。

!!!注意!!!

在dealloc一般是移除不了的,因为self持有webview,webview持有configuration.userContentController,userContentController强引用self。所以需要使用NSProxy解耦。

详见:demo

上一篇下一篇

猜你喜欢

热点阅读