1. 禁用手勢 和開啟手勢extension JYRTSShopListController: UIGestureRecognizerDelegate {/// 禁止使用手勢返回func forbidhenSideBack() {self.isCanSideBack = falseif (self.navigationController?.responds(to:#selector(getter: self.navigationController?.interactivePopGestureRecognizer))) == true {self.navigationController?.interactivePopGestureRecognizer?.delegate = self}}/// 恢復手勢返回func resetSideBack() {self.isCanSideBack = trueif (self.navigationController?.responds(to:#selector(getter: self.navigationController?.interactivePopGestureRecognizer))) == true {self.navigationController?.interactivePopGestureRecognizer?.delegate = nil}}func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {return self.isCanSideBack}
}
2.
在 導航控制器的根控制器 禁用手勢, 如果是其他控制器push過來, 本控制器消失的時候打開,本控制器出現的時候禁用override func viewWillAppear(_ animated: Bool) {super.viewWillAppear(animated)self.forbidhenSideBack()}override func viewWillDisappear(_ animated: Bool) {super.viewWillDisappear(animated)self.resetSideBack()}
3. 如果多個 導航控制器 push過去, 需要 在每個導航控制的 根控制都寫上上面的方法, 不然會出現手勢沖突例如A導航 push B導航,但是B沒辦法通過手勢返回A
A導航push C的tabbar的 導航B1和導航B2, 需要在B1和B2的home控制器寫上禁用方法
?
4. 如果首頁手勢不禁用, 還會出現一個嚴重BUG,
在首頁,側滑返回,造成界面被卡主, 無法進行任何交互,