iOS/SwiftUI
[SwiftUI] Custom Navigation Bar의 Back Swipe 액션 활성화하기
K00KIE-DEV
2022. 2. 15. 13:41
SwiftUI의 NavigationView를 사용하면 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 액션을 활성화하려면 위의 두 가지 방법 중 하나를 사용하시면 됩니다.