2017-11-01 7 views
0

전체보기를 스크롤하는 요구 사항이 있으며 customView 및 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() 
} 

나는 웹보기의 높이를 얻는 방법에 대한 몇 가지 문서를 읽을했다, 그것은 다음있는 ScrollView 작업을 할 수있는 webView.It의 높이를 설정 완료 웹뷰로드를 기다릴 것입니다. 그래서이 아이디어를 따르고 싶지만 다른 상황이 있습니다 :

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의 높이가 업데이트되고 스크롤된다. –