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 액션을 활성화하려면 위의 두 가지 방법 중 하나를 사용하시면 됩니다.
'iOS > SwiftUI' 카테고리의 다른 글
[SwiftUI] NavigationLink 버그 (2) | 2022.02.23 |
---|---|
[SwiftUI] Naver Map에 Custom Marker 띄우기 (2) | 2022.02.16 |
[SwiftUI] Menu 관련 버그 (0) | 2022.02.14 |
[SwiftUI] SwiftUI로 Naver Map iOS SDK 연동하기 (2) | 2022.02.11 |
[SwiftUI] SwiftUI View 캡쳐하기 (UIGraphicsImageRenderer) (0) | 2022.02.11 |