diff --git a/ShareExtension/ShareViewController.swift b/iBox/ShareExtension/ShareViewController.swift similarity index 100% rename from ShareExtension/ShareViewController.swift rename to iBox/ShareExtension/ShareViewController.swift diff --git a/ShareExtension/View/ShareExtensionBackGroundView.swift b/iBox/ShareExtension/View/ShareExtensionBackGroundView.swift similarity index 100% rename from ShareExtension/View/ShareExtensionBackGroundView.swift rename to iBox/ShareExtension/View/ShareExtensionBackGroundView.swift diff --git a/iBox/Sources/Favorite/FavoriteView.swift b/iBox/Sources/Favorite/FavoriteView.swift index 51f7cf3..ff76348 100644 --- a/iBox/Sources/Favorite/FavoriteView.swift +++ b/iBox/Sources/Favorite/FavoriteView.swift @@ -14,6 +14,8 @@ class FavoriteView: UIView { private lazy var webView = WebViewPreloader.shared.getFavoriteView() + private let refreshControl = UIRefreshControl() + // MARK: - Initializer override init(frame: CGRect) { @@ -30,7 +32,10 @@ class FavoriteView: UIView { // MARK: - Setup Methods private func setupProperty() { + guard let webView else { return } backgroundColor = .backgroundColor + webView.scrollView.refreshControl = refreshControl + refreshControl.addTarget(self, action: #selector(handleRefreshControl), for: .valueChanged) } private func setupHierarchy() { @@ -45,4 +50,12 @@ class FavoriteView: UIView { } } + @objc private func handleRefreshControl() { + DispatchQueue.main.asyncAfter(deadline: .now() + 0.7) { [weak self] in + guard let self = self , let webView = self.webView else { return } + webView.reload() + refreshControl.endRefreshing() + } + } + } diff --git a/iBox/Sources/Web/WebView.swift b/iBox/Sources/Web/WebView.swift index ff164b3..abafb01 100644 --- a/iBox/Sources/Web/WebView.swift +++ b/iBox/Sources/Web/WebView.swift @@ -27,6 +27,8 @@ class WebView: UIView { $0.scrollView.contentInsetAdjustmentBehavior = .always } + private let refreshControl = UIRefreshControl() + private let progressView = UIProgressView().then { $0.progressViewStyle = .bar $0.tintColor = .label @@ -58,6 +60,8 @@ class WebView: UIView { private func setupProperty() { backgroundColor = .backgroundColor webView.navigationDelegate = self + webView.scrollView.refreshControl = refreshControl + refreshControl.addTarget(self, action: #selector(handleRefreshControl), for: .valueChanged) progressObserver = webView.observe(\.estimatedProgress, options: .new) { [weak self] webView, _ in self?.progressView.setProgress(Float(webView.estimatedProgress), animated: true) } @@ -85,6 +89,13 @@ class WebView: UIView { webView.allowsBackForwardNavigationGestures = true } + @objc private func handleRefreshControl() { + DispatchQueue.main.asyncAfter(deadline: .now() + 0.7) { [weak self] in + self?.webView.reload() + self?.refreshControl.endRefreshing() + } + } + } extension WebView: WKNavigationDelegate { @@ -96,7 +107,7 @@ extension WebView: WKNavigationDelegate { self.progressView.isHidden = true } } - + // func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) { // print("웹뷰 로딩 실패: \(error.localizedDescription)") // }