gpt4 book ai didi

iOS WKWebView 检测何时到达底部

转载 作者:可可西里 更新时间:2023-10-31 23:59:33 30 4
gpt4 key购买 nike

我有一个从 UIViewView 到 WKWebView 的迁移问题,检测到使用 WKWebView 时 ScrollView 到达底部。在 WKWebView 之前,我使用 UIScrollViewDelegate 来检测用户是否通过滚动到 WebView 的末尾来查看所有内容。如果他这样做了,则启用“确认”按钮。 iPhone - knowing if a UIScrollView reached the top or bottom

现在使用 WKWebView 这不再起作用了。我想原因是,当使用 WKWebView 并加载 html 字符串时,它会缩小 View 以使内容完全可见。所以我必须通过将视口(viewport)附加到 html 字符串来设置视口(viewport)。这以与 UIWebView 相同的方式显示内容,提供 html 字符串,而不设置视口(viewport)。

但是现在加载时的 UIScrollViewDelegate 总是告诉底部已经到达。我猜,WKWebView 加载 html,在完全可见的情况下对其进行缩放,scrollViewDelegate 识别出内容是完全可见的,之后视口(viewport)进入并向上缩放页面,因此需要垂直滚动来显示完整内容.但是此时,我的“确认”按钮已经启用了。

代码片段

override func scrollViewDidScroll(_ scrollView: UIScrollView){
let scrollViewHeight = scrollView.frame.size.height;
let scrollContentSizeHeight = scrollView.contentSize.height;
let scrollOffset = scrollView.contentOffset.y;
if (scrollOffset + scrollViewHeight == scrollContentSizeHeight)
{
self.confirmButton.isEnabled = true;
}
}

使用 WKWebView 时,scrollContentSizeHeight 始终与加载时的 scrollViewHeight 相同,但在 scrollViewDidScroll 委托(delegate)函数调用多次(无滚动)后,scrollContentSizeHeight 大于实际大小的 scrollViewHeight。

最佳答案

But now the UIScrollViewDelegate on load always tells that the bottom already reached.

特定情况下的问题是 UIScrollView 委托(delegate)在 WKWebView 完全加载之前被调用。

取一个私有(private)实例变量来检查URL是否完全加载。

var isURLLoaded = false

确认 WKWebView 委托(delegate)给您的 viewController。

webView.scrollView.delegate = self
webView.navigationDelegate = self

并覆盖这些委托(delegate)方法:

func scrollViewDidScroll(_ scrollView: UIScrollView) {

if isURLLoaded {
if scrollView.contentOffset.y >= (scrollView.contentSize.height - scrollView.frame.size.height) {
confirmButton.isEnabled = true
} else if scrollView.contentOffset.y < scrollView.contentSize.height {
confirmButton.isEnabled = false
}
}
}

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {

isURLLoaded = true
}

关于iOS WKWebView 检测何时到达底部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52871774/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com