From d7de77f9890ab3ad43ced7e3a85cd120bd6e9643 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EC=A4=80=ED=91=9Cjuunpy0?= Date: Thu, 23 Apr 2026 01:21:34 +0900 Subject: [PATCH 1/3] =?UTF-8?q?=F0=9F=92=84-fix=20::=20[#182]=20=EB=B0=94?= =?UTF-8?q?=ED=85=80=EC=8B=9C=ED=8A=B8=20=ED=9B=84=EA=B8=B0=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C=20=EC=8B=9C=20=EC=95=8C=EB=9F=BF=20=EC=9D=B4=EC=A0=84?= =?UTF-8?q?=EC=97=90=20UI=EA=B0=80=20=EB=A8=BC=EC=A0=80=20=EB=B0=98?= =?UTF-8?q?=EC=98=81=EB=90=98=EB=8D=98=20=EB=AC=B8=EC=A0=9C=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Feature/Sources/Scene/Map/View/MapBottomSheetView.swift | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Projects/Feature/Sources/Scene/Map/View/MapBottomSheetView.swift b/Projects/Feature/Sources/Scene/Map/View/MapBottomSheetView.swift index 9ff67ab..026cd28 100644 --- a/Projects/Feature/Sources/Scene/Map/View/MapBottomSheetView.swift +++ b/Projects/Feature/Sources/Scene/Map/View/MapBottomSheetView.swift @@ -212,8 +212,7 @@ public final class MapBottomSheetView: UIView { guard index < reviewPlaces.count else { return } let placeId = reviewPlaces[index].id onDeleteTapped?(placeId) - reviewPlaces.remove(at: index) - renderUI() + // 삭제는 ViewController에서 API 성공 후 데이터 갱신으로 처리 } @objc private func didTapCard(_ sender: UITapGestureRecognizer) { From f702657df3bfad478d29f4eced16d1abf3ed0528 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EC=A4=80=ED=91=9Cjuunpy0?= Date: Thu, 23 Apr 2026 01:47:21 +0900 Subject: [PATCH 2/3] =?UTF-8?q?=F0=9F=92=84-fix=20::=20[#182]=20=EB=B0=94?= =?UTF-8?q?=ED=85=80=EC=8B=9C=ED=8A=B8=20=ED=95=B8=EB=93=A4=20=ED=84=B0?= =?UTF-8?q?=EC=B9=98=20=EC=98=81=EC=97=AD=20=ED=99=95=EC=9E=A5=20=EB=B0=8F?= =?UTF-8?q?=20=EB=93=9C=EB=9E=98=EA=B7=B8=20=EC=A0=9C=EC=8A=A4=EC=B2=98=20?= =?UTF-8?q?=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Scene/Map/View/MapBottomSheetView.swift | 18 +++++++++++++----- .../Scene/Map/View/MapViewController.swift | 13 +++++++++++-- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/Projects/Feature/Sources/Scene/Map/View/MapBottomSheetView.swift b/Projects/Feature/Sources/Scene/Map/View/MapBottomSheetView.swift index 026cd28..c91bb44 100644 --- a/Projects/Feature/Sources/Scene/Map/View/MapBottomSheetView.swift +++ b/Projects/Feature/Sources/Scene/Map/View/MapBottomSheetView.swift @@ -52,6 +52,7 @@ public final class MapBottomSheetView: UIView { $0.backgroundColor = UIColor.color.gomsDivider.color $0.layer.cornerRadius = 2.5 } + private let handleTouchArea = UIView() private let scrollView = UIScrollView().then { $0.showsVerticalScrollIndicator = false $0.alwaysBounceVertical = true @@ -93,19 +94,26 @@ public final class MapBottomSheetView: UIView { } private func addView() { - addSubview(handleView) + addSubview(handleTouchArea) + handleTouchArea.addSubview(handleView) addSubview(scrollView) scrollView.addSubview(contentStackView) } private func setLayout() { + handleTouchArea.snp.makeConstraints { + $0.top.equalToSuperview() + $0.leading.trailing.equalToSuperview() + $0.height.equalTo(40) + } + handleView.snp.makeConstraints { - $0.top.equalToSuperview().offset(8) - $0.centerX.equalToSuperview() - $0.width.equalTo(40); $0.height.equalTo(5) + $0.center.equalToSuperview() + $0.width.equalTo(40) + $0.height.equalTo(5) } scrollView.snp.makeConstraints { - $0.top.equalTo(handleView.snp.bottom).offset(8) + $0.top.equalTo(handleTouchArea.snp.bottom).offset(8) $0.leading.trailing.bottom.equalToSuperview() } contentStackView.snp.makeConstraints { diff --git a/Projects/Feature/Sources/Scene/Map/View/MapViewController.swift b/Projects/Feature/Sources/Scene/Map/View/MapViewController.swift index 57e9ae7..5798698 100644 --- a/Projects/Feature/Sources/Scene/Map/View/MapViewController.swift +++ b/Projects/Feature/Sources/Scene/Map/View/MapViewController.swift @@ -72,6 +72,9 @@ private let recentSearchView = MapRecentSearchView().then { $0.tableView.backgroundColor = .color.background.color } private let bottomSheetView = MapBottomSheetView() +private let bottomSheetHandleTouchArea = UIView().then { + $0.backgroundColor = .clear +} private let placeDetailView = MapPlaceDetailView().then { $0.isHidden = true $0.clipsToBounds = true @@ -80,7 +83,7 @@ private let placeDetailView = MapPlaceDetailView().then { private var bottomSheetHeight: Constraint? private var detailSheetHeight: Constraint? private let defaultHeight: CGFloat = 240 -private let firstHeight: CGFloat = 20 +private let firstHeight: CGFloat = 30 private let detailMinHeight: CGFloat = 225 private var selectedPlaceId: Int = -1 private var currentPlaceDetail: MapPlaceDetailModel? @@ -204,7 +207,7 @@ private func setupView() { self.view.backgroundColor = .black view.backgroundColor = .color.background.color view.addSubview(mapWrapperView) - [bottomSheetView, recentSearchView, routeSelectionView, placeDetailView, searchBar].forEach { view.addSubview($0) } + [bottomSheetView, bottomSheetHandleTouchArea, recentSearchView, routeSelectionView, placeDetailView, searchBar].forEach { view.addSubview($0) } } private func setupLayout() { @@ -219,6 +222,11 @@ private func setupLayout() { $0.leading.trailing.bottom.equalToSuperview() self.bottomSheetHeight = $0.height.equalTo(defaultHeight).constraint } + bottomSheetHandleTouchArea.snp.makeConstraints { + $0.leading.trailing.equalToSuperview() + $0.bottom.equalTo(bottomSheetView.snp.top) + $0.height.equalTo(30) + } placeDetailView.snp.makeConstraints { $0.leading.trailing.bottom.equalToSuperview() self.detailSheetHeight = $0.height.equalTo(0).priority(.high).constraint @@ -733,6 +741,7 @@ private func styleIDForCategory(_ category: String) -> String { } private func setupGesture() { + bottomSheetHandleTouchArea.addGestureRecognizer(UIPanGestureRecognizer(target: self, action: #selector(handlePan))) bottomSheetView.addGestureRecognizer(UIPanGestureRecognizer(target: self, action: #selector(handlePan))) placeDetailView.addGestureRecognizer(UIPanGestureRecognizer(target: self, action: #selector(handlePan))) } From 9a2b9a7062c957664976c4f23c353ca4b088e4eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EC=A4=80=ED=91=9Cjuunpy0?= Date: Thu, 23 Apr 2026 01:49:51 +0900 Subject: [PATCH 3/3] =?UTF-8?q?=F0=9F=92=84-fix=20::=20[#182]=20=ED=95=84?= =?UTF-8?q?=EC=9A=94=20=EC=97=86=EB=8A=94=20=EC=A3=BC=EC=84=9D=20=EC=A0=9C?= =?UTF-8?q?=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Feature/Sources/Scene/Map/View/MapBottomSheetView.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Projects/Feature/Sources/Scene/Map/View/MapBottomSheetView.swift b/Projects/Feature/Sources/Scene/Map/View/MapBottomSheetView.swift index c91bb44..8b1d6da 100644 --- a/Projects/Feature/Sources/Scene/Map/View/MapBottomSheetView.swift +++ b/Projects/Feature/Sources/Scene/Map/View/MapBottomSheetView.swift @@ -220,7 +220,7 @@ public final class MapBottomSheetView: UIView { guard index < reviewPlaces.count else { return } let placeId = reviewPlaces[index].id onDeleteTapped?(placeId) - // 삭제는 ViewController에서 API 성공 후 데이터 갱신으로 처리 + } @objc private func didTapCard(_ sender: UITapGestureRecognizer) {