From 663f0069a5715abdfd4774489ffeba8308e24d29 Mon Sep 17 00:00:00 2001 From: noeyiz Date: Sun, 10 Mar 2024 15:20:04 +0900 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20WebView=EC=97=90=20refreshControl?= =?UTF-8?q?=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- iBox/Sources/Web/WebView.swift | 41 +++++++++++++++++++++------------- 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/iBox/Sources/Web/WebView.swift b/iBox/Sources/Web/WebView.swift index bfcb41e..d7c96b6 100644 --- a/iBox/Sources/Web/WebView.swift +++ b/iBox/Sources/Web/WebView.swift @@ -22,6 +22,8 @@ class WebView: UIView { $0.scrollView.contentInsetAdjustmentBehavior = .always } + private let refreshControl = UIRefreshControl() + override init(frame: CGRect) { super.init(frame: frame) setupProperty() @@ -44,6 +46,8 @@ class WebView: UIView { private func setupProperty() { backgroundColor = .backgroundColor webView.navigationDelegate = self + webView.scrollView.refreshControl = refreshControl + refreshControl.addTarget(self, action: #selector(handleRefreshControl), for: .valueChanged) } private func setupHierarchy() { @@ -62,22 +66,29 @@ 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 { -// func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) { -// print("웹뷰 로딩 실패: \(error.localizedDescription)") -// } -// -// func webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: Error) { -// print("웹뷰 프로비저널 네비게이션 실패: \(error.localizedDescription)") -// } -// -// func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) { -// if let url = navigationAction.request.url { -// print("웹뷰가 리다이렉트 되는 URL: \(url.absoluteString)") -// } -// -// decisionHandler(.allow) -// } + // func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) { + // print("웹뷰 로딩 실패: \(error.localizedDescription)") + // } + // + // func webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: Error) { + // print("웹뷰 프로비저널 네비게이션 실패: \(error.localizedDescription)") + // } + // + // func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) { + // if let url = navigationAction.request.url { + // print("웹뷰가 리다이렉트 되는 URL: \(url.absoluteString)") + // } + // + // decisionHandler(.allow) + // } } From b6af21e8c935ba42f039b8cbe80854363f6443b1 Mon Sep 17 00:00:00 2001 From: noeyiz Date: Sun, 10 Mar 2024 15:26:50 +0900 Subject: [PATCH 2/2] =?UTF-8?q?feat:=20FavoriteView=EC=97=90=20refreshCont?= =?UTF-8?q?rol=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ShareExtension}/ShareViewController.swift | 0 .../View/ShareExtensionBackGroundView.swift | 0 iBox/Sources/Favorite/FavoriteView.swift | 13 +++++++++++++ 3 files changed, 13 insertions(+) rename {ShareExtension => iBox/ShareExtension}/ShareViewController.swift (100%) rename {ShareExtension => iBox/ShareExtension}/View/ShareExtensionBackGroundView.swift (100%) 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() + } + } + }