웹뷰나 테이블뷰 등을 스크롤하면서 로딩 인디케이터가 나오고 일정 이상 드래그하면 새로고침이 되는 것을 본적이 있을것이다. 이 때 사용하는 것이 UIRefreshControl객체이다.
이 사례는 웹뷰에서 사용하기 위해 정리하는 내용이다.
절차는 아래와 같다.
let refreshControl = UIRefreshControl()
/// 웹뷰 리프레시
@objc func reloadWebView(_ sender: UIRefreshControl) {
print("refresh")
self.mainWebView.reload()
sender.endRefreshing()
}
refreshControl.addTarget(self, action: #selector(reloadWebView(_:)), for: .valueChanged)
→ 웹뷰에는 scrollView가 포함되어있고 scrollView는 refreshControl 변수를 가지고 있다.
mainWebView.scrollView.refreshControl = refreshControl
mainWebView.scrollView.delegate = self
mainWebView.scrollView.bounces = true
mainWebView.scrollView.alwaysBounceVertical = false
let refreshControl = UIRefreshControl()
refreshControl.addTarget(self, action: #selector(reloadWebView(_:)), for: .valueChanged)
mainWebView.scrollView.refreshControl = refreshControl
// 필수
mainWebView.scrollView.bounces = true
/// 웹뷰 리프레시
@objc func reloadWebView(_ sender: UIRefreshControl) {
print("refresh")
self.mainWebView.reload()
sender.endRefreshing()
}
mainWebView.scrollView.delegate = self
mainWebView.scrollView.bounces = true
mainWebView.scrollView.alwaysBounceVertical = false