项目中很多页面返回上一页会有不同的处理方法,如需要返回到首页,网页返回上一页等。
特别是横屏右滑到竖屏的上一页时,横竖屏切换的方式和右滑事件会产生冲突,导致右滑失败(横竖屏切换动画完后停留在横屏页面)。虽然后来解决了,但是一想还不如直接通过系统的右滑事件直接调用自定义的返回方法呢,当然这样会导致直接返回上一页没有右滑的动画效果,所有也可以做多一个判断。
class BaseVC: UIViewController , UIGestureRecognizerDelegate {
var isNeedPopVC: Bool = false //页面是否需要调用自定义返回方法
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
//开启右滑返回
navigationController?.interactivePopGestureRecognizer?.isEnabled = true
navigationController?.interactivePopGestureRecognizer?.delegate = self
}
//MARK:-UIGestureRecognizerDelegate
func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
//非首页调用自定义的返回方法
if let number = navigationController?.viewControllers.count , number > 1 {
if !isNeedPopVC { return true }
//页面重写了返回方法,则直接调用重写的返回方法
popToVC()
}
return false
}
}
网友评论