scrollView 中的 webView 不能滚动?
Posted
技术标签:
【中文标题】scrollView 中的 webView 不能滚动?【英文标题】:webView in scrollView can't be scroll? 【发布时间】:2017-11-01 02:27:40 【问题描述】:我有一个要求是滚动整个视图,它包含 customView 和 WebView。结构如下图:
因此,我选择 scrollView 作为 superView 使其滚动。我使用 snapkit 来布局所有视图。我向具有customView 和webView 的scrollView 添加了一个containView。如下代码:
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】:你试过给 webView 一个固定的高度和宽度吗? 如果scrollview中内容的大小不大于scrollview本身的大小,就不会滚动!
看起来可能有顶部/底部配对和高度限制可能会导致问题?
【讨论】:
是的,你是对的,首先,我需要给webView一个固定的高度,当观察到contentSize发生变化时,它会更新webView的高度,它会滚动。以上是关于scrollView 中的 webView 不能滚动?的主要内容,如果未能解决你的问题,请参考以下文章
目标C中的Autozoom webview scrollview