iOS/SwiftUI

[SwiftUI] Custom Navigation Bar의 Back Swipe 액션 활성화하기

K00KIE-DEV 2022. 2. 15. 13:41

SwiftUINavigationView를 사용하면 NavigationBar가 자동으로 생성됩니다.

그러나 기본 NavigationBar는 커스텀이 까다로운 부분이 있어서 종종 커스텀 바를 구현하곤 합니다.

 

기본 NavigationBar를 hidden시키고 커스텀 바를 구현하여 화면의 맨 위에 배치하는 것은 문제가 없지만,

이렇게 구현하는 경우에는 Back Swipe시 이전화면으로 돌아가는 액션도 같이 비활성화가 됩니다.

 

extension UINavigationController: ObservableObject, UIGestureRecognizerDelegate {
    open override func viewDidLoad() {
        super.viewDidLoad()
        interactivePopGestureRecognizer?.delegate = nil
    }
}

 

extension UINavigationController: ObservableObject, UIGestureRecognizerDelegate {
    open override func viewDidLoad() {
        super.viewDidLoad()
        interactivePopGestureRecognizer?.delegate = self
    }
    
    public func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
        return viewControllers.count > 1
    }
}

 

커스텀 바를 사용하면서도 Back Swipe 액션을 활성화하려면 위의 두 가지 방법 중 하나를 사용하시면 됩니다.