当WKWebView是片段中唯一的可滚动元素时,所有内容都很好,WebView将滚动事件发送到页面
如果我想在WebView之上和之下添加本机元素,那么事情会变得复杂得多.
UIScrollView UILabel WKWebView UILabel
我知道在ScrollView中有一个WebView是不好的,但我必须提供一个滚动体验混合内容和正确的滚动事件在html文档.我在这件事上发现了很多问题,但是我无法创建一个完整的端到端解决方案.
解决方法
好的,我花了一阵时间了解你要做的事情.
我知道你想保留外部scrollView,但我很确定不可能实现你想要做的(只有这样,如果你设置了outerScrollView.delegate = webView – 但没有为我工作我试过了)
我认为最好的解决办法是:
删除外部scrollView
>将您的webView的contentInsets设置为您需要的顶部和底部的任何高度.例如.为100pt:webView.contentInset = UIEdgeInsetsMake(100,100,0);
>将您的UIElements作为子视图添加到您的UIWebView而不是UIScrollView(基本上到您使用contentInsets创建的可用空间)
以前(其他方式):
>设置您的UIWebView的高度约束
>将您的UIViewController中的高度约束存储为IBOutlet
> set webView.scrollView.scrollEnabled = NO;在你的viewDidLoad或故事板
>一旦webView被加载,提取其内容高度webView.scrollView.contentSize.height
>使用其内容高度的值更新UIWebView height约束viaself.webViewContentHeightConstraint.constant = webView.scrollView.contentSize.height
>调用[self.scrollView layoutIfNeeded];以确保您的视图再次呈现
不要忘了做4& 5每当webView完成加载内容