項(xiàng)目中很多頁面返回上一頁會(huì)有不同的處理方法,如需要返回到首頁,網(wǎng)頁返回上一頁等。
特別是橫屏右滑到豎屏的上一頁時(shí),橫豎屏切換的方式和右滑事件會(huì)產(chǎn)生沖突,導(dǎo)致右滑失敗(橫豎屏切換動(dòng)畫完后停留在橫屏頁面)。雖然后來解決了,但是一想還不如直接通過系統(tǒng)的右滑事件直接調(diào)用自定義的返回方法呢,當(dāng)然這樣會(huì)導(dǎo)致直接返回上一頁沒有右滑的動(dòng)畫效果,所有也可以做多一個(gè)判斷。
class BaseVC: UIViewController , UIGestureRecognizerDelegate {
var isNeedPopVC: Bool = false //頁面是否需要調(diào)用自定義返回方法
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
//開啟右滑返回
navigationController?.interactivePopGestureRecognizer?.isEnabled = true
navigationController?.interactivePopGestureRecognizer?.delegate = self
}
//MARK:-UIGestureRecognizerDelegate
func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
//非首頁調(diào)用自定義的返回方法
if let number = navigationController?.viewControllers.count , number > 1 {
if !isNeedPopVC { return true }
//頁面重寫了返回方法,則直接調(diào)用重寫的返回方法
popToVC()
}
return false
}
}