SwiftUI

navigationBar가 숨김 처리된 상태에서 제스처로 화면 뒤로가기

Phililip
728x90

안녕하세요.

 

개발하면서 새롭게 알게 된 사실 하나 공유할게요.

 


 

(UIKit이든 SwiftUI든) NavigationView를 사용하면, 이렇게 swipe 동작으로 손쉽게 이전 화면으로 돌아갈 수 있습니다.

 

 

 

이때 커스텀 navigationBar를 사용하고 싶으면 기본 navigationBar를 숨겨야겠죠?

 

그런데 (iOS 16 이하에서) navigationBar를 숨기면 push와 dismiss 동작은 잘 동작하지만, swipe로 뒤로 가기 동작은 쓸 수 없더라구요..

 

 

만약, navigationBar를 숨기고 동시에 swipe 동작을 사용하고 싶다면, 아래 코드를 추가해 주면 됩니다.

(다만, 이 방법은 앱 전체에 영향을 미치는 코드이기 때문에 사용할 때 신경 써야 할 것 같아요. 개인적으로 앱 전체에 영향이 가는 코드는 좋아하지 않지만... 지금은 어쩔 수 없는 것 같아요..ㅠㅠ)

 

 

 

# 요약

- 기본적으로 SwiftUI에서 navigationBar를 숨기면 swipe로 화면 뒤로가기를 할 수 없다.
- UINavigationController의 제스처를 강제로 활성화시켜주면 사용할 수 있다.
- 나중에 애플이 고쳐주면 좋겠다ㅠㅠ

 

 

# 참고

- https://stackoverflow.com/questions/59921239/hide-navigation-bar-without-losing-swipe-back-gesture-in-swiftui

 

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 SwiftU...

stackoverflow.com

 

 

반응형

'SwiftUI' 카테고리의 다른 글

TCA(5) : 부모-자식 간 이벤트 전달  (0) 2023.07.20
TCA(4) : Scope  (1) 2023.07.12
TCA(3) : _printChanges  (0) 2023.06.24
TCA(2) : TaskResult, run  (0) 2023.06.20
TCA(1) : ReducerProtocol, StoreOf, WithViewStore  (0) 2023.06.13