반응형
오늘 일하던 중, 뷰컨트롤러의 계층 구조에 대한 오류(whose view is not in the window hierarchy.)가 발생하는 바람에 이전 프로젝트에서 했던 방식과 동일하게 네비게이션컨트로럴를 사용하도록 변경을 하고 특정 페이지에서는 좌에서 우로 제스처 동작이 먹히지 않도록 처리를 했다. 이런건 기록 해놔야 한다.
전체적인 뷰컨트롤러의 관리는 UIManager가 하고 있으므로 UIManager에 다음과 같은 메서드가 있다.
다음 프로토콜을 따른다고 명시해야한다.
@protocol UIGestureRecognizerDelegate <NSObject>
소스코드는 다음과 같다.
/**
* NavigationBar Back
*/
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRequireFailureOf otherGestureRecognizer: UIGestureRecognizer) -> Bool {
if UIManager.shared.mainNavigationController?.viewControllers.count ?? 0 == 1 {
return false
}
if UIManager.shared.mainNavigationController?.viewControllers.count ?? 0 > 1 {
if let _ = UIManager.shared.topViewController() as? ProfileViewController {
return false
}
}
return true
}
제스처를 강제해야하는 컨트롤러가 많아지면?
뭔가 좀 더 생각한 뒤의 코드가 필요하겠다. 고민해바야겠다는 ^^
반응형
'프로그래밍 > Swift' 카테고리의 다른 글
Swift 지정된 날짜(Date)의 요일 구하기 (0) | 2022.05.30 |
---|---|
[Swift] @discardableResult, 함수 리턴값 사용하지 않는 Call에 대한 배려 (0) | 2022.05.25 |
UITableView, UITextfield Keyboard 내리는 방법 2가지. (0) | 2022.04.15 |
fileManager tmp directory of files delete, stack-logs.xxxx.... (0) | 2021.11.30 |
UITableView Grouped 스타일의 헤더 안보이게 처리 (0) | 2021.11.12 |