滚动越界时WKWebView会发生什么

时间:2017-11-09 19:43:09

标签: ios swift wkwebview

我正在使用分页滚动视图,将不同的Web视图显示为页面。滚动视图已设置clipsToBounds = false以允许在滚动视图中显示上一页和后一页。

滚动页面时,有一个确切的时刻,WKWebViews内容变得完全不可见。这恰好发生在Web视图离开滚动视图边界的那一刻(见下文)。在某些网站上,界限内的可见内容与实际内容不同。

wkwebview hides wkwebview different content

只有在使用WKWebView而不是UIWebView时才会出现这些问题(一切都按照预期的方式与UIWebView一起使用)。

是否有人遇到与WKWebView类似的问题,并为他们提供解决方案?

编辑: Github上现在有一个示例项目,您可以在其中体验错误并使用它: WKWebView test project

2 个答案:

答案 0 :(得分:1)

要想出来,我认为你需要使用UICollectionView。 单元格应该与WKWebView一起存在,而它将在屏幕上。

1)您需要将其放置为Here

接下来的问题是将内容翻页。 2)要做得对,您需要在集合中添加UIScrollView,如Here

3)之后,使您的UIScrollView页面化并​​在viewdidload中写入: collectionView.addGestureRecognizer(scrollView.panGestureRecognizer)

4)收到UICOllectionView中显示的模型后 - 更新你的UIScrollView的contentSize

scrollView.contentSize = CGSize(width: (models.count*(cellWidth+cellIndent) + sectionIndent * 2), height: cellHeight)

5)实施UIScrollViewDelegate

extension YourVC: UIScrollViewDelegate {
    func scrollViewDidScroll(_ scrollView: UIScrollView) {
        if scrollView == self.scrollView {
            collectionView.contentOffset = scrollView.contentOffset
        } else if scrollView == self.collectionView {
            self.scrollView.contentOffset = scrollView.contentOffset
        }
    }
}

多数民众赞成。快乐编码=)

答案 1 :(得分:0)

WKWebView的设计性能比UIWebView更高。如果它不在视图层次结构的顶部,它将停止运行网页的某些部分或完全停止渲染。这里的问题是,一旦网页超出了scrollview的范围,WKWebView就不会认为自己在屏幕上,即使它因设置clipsToBounds = false而可见。

最简单的方法是使用UIWebView。如果由于某种原因您需要WebKit,请考虑调整您的分页代码,以便您的scrollview跨越整个视图控制器。