- Total
꿈꾸는리버리
Navigation가 숨김 처리된 상태에서 제스처로 화면 뒤로가기 본문
🔧 문제 상황
NavigationView에서 Navbar를 커스텀하기 위해서 back 버튼을 없앤 경우, 스와이프 동작이 하지 않음


.navigationBarBackButtonHidden(true)
💬 고민 Point
1. NavigationView에서 바를 가리지 않으면 해당 문제는 발생하지 않는다.
2. 강제로 true로 바뀌는가 싶어 아래의 코드를 추가해봤는데도, 문제가 해결되지 않았음
.interactiveDismissDisabled(false) // 스와이프 기능 유지
interactiveDismissDisabled(_:) | Apple Developer Documentation
Conditionally prevents interactive dismissal of presentations like popovers, sheets, and inspectors.
developer.apple.com
🌟 문제 해결
스택 오버 플로우에서 같은 문제를 해결한 코드를 보았고 해결 완료!
Hide navigation bar without losing swipe back gesture in SwiftUI
In SwiftUI, whenever the navigation bar is hidden, the swipe to go back gesture is disabled as well. Is there any way to hide the navigation bar while preserving the swipe back gesture in SwiftUI? ...
stackoverflow.com
// 스와이프시 뷰 닫히게
extension UINavigationController: UIGestureRecognizerDelegate {
override open func viewDidLoad() {
super.viewDidLoad()
interactivePopGestureRecognizer?.delegate = self
}
public func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
return viewControllers.count > 1
}
}
해당 코드의 설명
- UINavigationController에서 스와이프하여 뒤로 가는 기능을 활성화
- 루트 화면에서는 스와이프가 비활성화됨(뒤로 갈 수 없음)
- 다른 화면에서는 스와이프하면 뒤로 갈 수 있음
뷰 전체에 영향을 주는 코드라, 최대한 안쓰는 방법으로 찾아봤는데 찾지를 못했다.,.. ㅠㅠ