wkWebView中插入原生view有很多方法, 其中webView設(shè)置scrollView.contentInset并添加原生的view到inset區(qū)域可以實(shí)現(xiàn)界面效果, 但是會(huì)造成wkWebView中h5代碼中的點(diǎn)擊失效,在此的方法是通過js代碼注入空白view區(qū)域?qū)⒃鷙iew添加上去; 只需在webView加載完成的代理方法中插入空白view, 并在相應(yīng)的區(qū)域?qū)⒃膙iew添加到webView.scrollView即可:
- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation {
NSString *js = [NSString stringWithFormat:@"\
var appendDiv = document.getElementById(\"AppAppendDIV\");\
if (appendDiv) {\
appendDiv.style.height = %@+\"px\";\
} else {\
var appendDiv = document.createElement(\"div\");\
appendDiv.setAttribute(\"id\",\"AppAppendDIV\");\
appendDiv.style.width=%@+\"px\";\
appendDiv.style.height=%@+\"px\";\
document.body.prepend(appendDiv);\
}\
", @(headHeight), @(self.webView.scrollView.contentSize.width), @(headHeight)];
[self.webView evaluateJavaScript:js completionHandler:nil];
}
// headHeight即為原生view的高度
// js代碼最后一句document.body.prepend(appendDiv);\是將view加入到頂部
// 加入底部用:document.body.appendChild(appendDiv);\
//獲取頁面高度
[webView evaluateJavaScript:@"document.body.offsetHeight;"completionHandler:^(id _Nullable result,NSError *_Nullable error) {
//獲取頁面高度
NSLog(@"%@",result);
}];