iOS

[iOS] 내비게이션 바 숨김 시 swipe 제스처로 뒤로 가기 구현 하기

띵지니어 2024. 9. 21. 17:07
반응형

안녕하세요 띵지니어 입니다. 😼

네비게이션 바를 숨김 처리했을때, swipe 제스처로 뒤로가기를 구현하는 방법에 대해서 포스팅 해보려고 합니다.

iOS 개발을 진행하다 보면, 요구 사항에 따라 전체 화면을 더 깔끔하게 보여주기 위해
아래 코드와 같이 네비게이션 바를 숨기는 경우가 종종 있습니다.

navigationController?.isNavigationBarHidden = true

하지만 네비게이션 바를 숨기면, 기본적으로 제공되는 Swipe로 뒤로 가기 기능이 비활성화된다는 점을 알게 됩니다.

해결하는 법은 매우 간단합니다.

해당하는 ViewController 의 ViewDidLoad에서 아래 코드만 추가 하면 됩니다.

override func viewDidLoad() {
    super.viewDidLoad()

    navigationController?.isNavigationBarHidden = true
    navigationController?.interactivePopGestureRecognizer?.delegate = nil // 추가
}

 

 

코드 상세 설명

1. navigationController?.isNavigationBarHidden = true

- 네비게이션 바를 숨기는 코드입니다.

2. navigationController?.interactivePopGestureRecognizer?.delegate = nil

기본적으로 네비게이션 바가 숨겨졌을 때 비활성화되는 Swipe 제스처를 다시 활성화하는 코드입니다.
delegate를 nil로 설정하여, 제스처 인식기의 기본 제약을 해제하고 항상 작동하도록 만듭니다.

 

결과

 

Reference

 

https://developer.apple.com/documentation/uikit/uinavigationcontroller/1621847-interactivepopgesturerecognizer/

 

interactivePopGestureRecognizer | Apple Developer Documentation

The gesture recognizer responsible for popping the top view controller off the navigation stack.

developer.apple.com

 

https://greenchobo.tistory.com/13

 

[Swift] Navigation bar 숨김 시 swipe back 불가

Navigation bar 숨김 시 swipe back 불가 iOS 앱을 개발할 때 navigation controller를 사용하지만 네비게이션바를 직접 만들어 사용하고 싶을 경우 기본으로 제공되는 네비게이션바를 숨김처리 하는 경우가

greenchobo.tistory.com

 

Xcode 15.0
iOS 17.2.1
MacOS Sonoma 14.6
환경에서 작성 한 글입니다.

감사합니다. 🤗

 

반응형