ios – SWIFT – 滚动视图内的WKWebView中的HTML滚动事件

前端之家收集整理的这篇文章主要介绍了ios – SWIFT – 滚动视图内的WKWebView中的HTML滚动事件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个用于测试目的的网页( https://storage.googleapis.com/htmltestingbucket/nested_scroll_helper.html),只是打印一个滚动事件的计数器,html已经在一个固定的标题

当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完成加载内容

猜你在找的iOS相关文章