美文网首页
iOS 开发实现WKWebView点击事件处理,响应并处理点击事

iOS 开发实现WKWebView点击事件处理,响应并处理点击事

作者: 噜噜噜噜噜噜噜噜 | 来源:发表于2020-04-07 18:14 被阅读0次

    序言

    1、iOS开发中移动端和h5交互处理已经是很常用的手段,在前面的交互处理2中我们已经详细的讲过用代理拦截的方式处理h5的响应事件,这里不做更多的说明;我们今天介绍另外一种方法:WKScriptMessageHandler协议实现。

    实现原理

    1、JS与iOS约定好jsToOc方法,用作JS在调用iOS时的方法;
    2、iOS使用WKUserContentController的-addScriptMessageHandler:name:方法监听name为jsToOc的消息;
    3、JS通过window.webkit.messageHandlers.jsToOc.postMessage()的方式对jsToOc方法发送消息;
    4、iOS在-userContentController:didReceiveScriptMessage:方法中读取name为jsToOc的消息数据message.body。
    
    注册方法

    说明

    这里需要注意以下几点说明:
    1、[userContentController addScriptMessageHandler:self name:@"jsToOc"]会引起循环引用问题。一般来说,在合适的时机removeScriptMessageHandler可以解决此问题。比如:- (void)viewDidDisappear:(BOOL)animated;
    2、也可以用另外一种方式解决比如:
    //自定义的WKScriptMessageHandler 是为了解决内存不释放的问题
    WeakWebViewScriptMessageDelegate *weakScriptMessageDelegate = [[WeakWebViewScriptMessageDelegate alloc] initWithDelegate:self];
    然后在dealloc里面移除方法并释放对象;
    3、需要适配到iOS9一下系统版本,则应该设置WKWebViewConfiguration中的config.applicationNameForUserAgent为ChinaDailyForiPad;

    适配方案

    相关文章

      网友评论

          本文标题:iOS 开发实现WKWebView点击事件处理,响应并处理点击事

          本文链接:https://www.haomeiwen.com/subject/donnphtx.html