scrollView中的webView无法滚动?

时间:2017-11-01 02:27:40

标签: ios swift uiscrollview wkwebview ios-autolayout

我有一个滚动整个视图的要求,它包含customView和WebView。结构如下图所示:

enter image description here

因此,我选择scrollView作为superView使其滚动。我使用snapkit来布局所有视图。我向scrollView添加了一个containsView,它包含了customView和webView。代码如下:

func setupScrollView() {
    view.addSubview(scrollView)
    scrollView.snp.makeConstraints { (make) in
        make.edges.equalTo(view)
    }

    scrollView.addSubview(containView)
    containView.snp.makeConstraints { (make) in
        make.left.right.equalTo(view)
        make.top.bottom.equalTo(scrollView)
    }
}

func setupHeaderView() {
    containView.addSubview(headerView)
    headerView.snp.makeConstraints { (make) in
        make.left.right.equalTo(view)
        make.top.equalTo(containView)
    }
}

func setupWebView() {
    containView.addSubview(webView)

    webView.navigationDelegate = self
    webView.scrollView.bounces = false
    webView.scrollView.isScrollEnabled = false

    loadLocalHtml()
}

我已经阅读了一些关于如何获取webView高度的文档,它等待webView加载完成,然后设置webView的高度。它可以使scrollView工作。所以我想遵循这个想法,但我有不同的情况:

1)当webView加载完成时,我需要加载本地html。我需要提出从服务器获取数据的请求。

2)然后我调用webView的js方法将数据填充到html。 html包含图像和文本。

我已经考虑过如何做到这一点。因此,当调用js方法成功时,我获得了webView的高度。以下代码:

func updateWebView(_ json: String) {
    let userId = userManager.currentUserId()
    webView.evaluateJavaScript("updateData(\(json),'\(userId)')") { [weak self](response, error) in
        guard let strongself = self else { return }
        if error == nil {
          strongself.settingconstraints()
        }
    }
}

func settingconstraints() {
    webView.snp.updateConstraints { make in
        make.left.right.equalTo(view)
        make.top.equalTo(headerView.snp.bottom)
        make.height.equalTo(webView.scrollView.contentSize.height)
        make.bottom.equalTo(containView)
    }
}

但它无法滚动,我现在不知道如何解决它?请帮忙。谢谢

1 个答案:

答案 0 :(得分:0)

您是否尝试过将webView设为固定高度&宽度? 如果scrollview中内容的大小不大于scrollview本身的大小,则不会滚动!

它看起来也许有一个顶部/底部配对而高度约束可能会导致问题?