2017-11-01 8 views
0

ビュー全体をスクロールする必要がありました。カスタムビューとWebViewが含まれています。画像以下のような構造体:scrollViewのwebViewはスクロールできませんか?

enter image description here

はしたがって、私はそれをスクロールさせるスーパーとしてscrollViewを選択してください。私はスナップキットを使用してすべてのビューをレイアウトします。私は、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のの高さを取得する方法についていくつかの文書を読んでいたが、それは、その後、scrollViewの作業を行うことができますwebView.Itの高さを設定し終えたのWebViewの負荷を待っています。だから私はこのアイディアに従いたいと思っていますが、私は別の状況がありました:

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) 
    } 
} 

しかし、それは、私は今それを解決する方法がわからない、スクロールすることができませんでしたか?助けてください。ありがとう

答えて

0

webViewの固定高さを与えようとしましたか?&幅ですか? スクロールビュー内のコンテンツのサイズがスクロールビューのサイズより大きくない場合、スクロールしません!

また、トップ/ボトムのペア設定があり、高さの制約が問題を引き起こす可能性がありますか?

+1

ええ、あなたは正しいです、最初に、私はそれをwebViewに固定する必要があります。contentSizeが変更されたことを観察すると、webViewの高さが更新され、スクロールします。 –

関連する問題