Jimmy's iOS
iOS) UINavigationController 왼쪽 스크롤 제스쳐로 팝업 구현 본문
UINavigationController 를 사용해서 커스텀 barButtonItem 을 주면 화면을 왼쪽 스크롤시 자동 팝업이 되는게 불가능했다.
어떻게 하면 기본 자동 팝업 효과를 줄 수 있을까 찾아보니 GestureRecognizerDelegate 로 해결을 할 수 있었다.
import UIKit
// 여기서 SecondViewController 는 FirstViewController 에서 네비게이션으로 푸시된 뷰컨이라 가정
class SecondViewController : UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
navigationController?.interactivePopGestureRecognizer?.delegate = self // 1.delegate 선언해준다
}
}
//MARK: - UIGestureRecognizerDelegate // 2. UIGestureRecognizerDelegate 선언
extension MyPageViewController : UIGestureRecognizerDelegate {
func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
return true
}
}
이렇게 UIGestureRecognizerDelegate 를 활용하면 각각 원하는 네비게이션 컨트롤러에서 자동 팝업 효과를 줄 수 있다.
또한 전체 Extension 으로 공통을 만들어서 모든 네비게이션 컨트롤러에서 작동하도록 구현해 줄 수 있다.
extension UINavigationController : ObservableObject, UIGestureRecognizerDelegate {
override open func viewDidLoad() {
super.viewDidLoad()
interactivePopGestureRecognizer?.delegate = self
}
public func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
return viewControllers.count > 1
}
}
'iOS' 카테고리의 다른 글
iOS) URLSession 에 대해 알아보자 (0) | 2021.10.31 |
---|---|
iOS) 다크모드 & 라이트 모드 막기 (0) | 2021.10.03 |
iOS) Lottie-Animation 적용하기 (0) | 2021.09.22 |
iOS) 앱 최신버전 체크 및 업데이트 하러 가기 (0) | 2021.09.14 |
iOS) Swift 애플산돌고딕네오(AppleSDGothicNeo) 폰트 적용하기 (0) | 2021.09.01 |