今天测试提了一个问题:在TabBarViewController
的currentViewController
页面屏幕左侧边缘向右滑一下(就是那种push到新页面后侧滑返回手势),点击当前页面的按钮或者其他View想要跳转到下一个ViewController
,发现跳转失败(实际不是跳转失败,而是新页面出现在了当前页面的下面,当前页面把新页面遮住了),我的项目类似于微信那样,有5个TabBarItem
,对应有5个页面,在每个页面未跳转新页面前做这种侧滑手势都会出现这种问题。
我这个项目由于要自定义导航栏返回按钮,所以我看到这个问题首先想到的是跟自定义返回按钮有关,众所周知,自定义返回按钮后侧滑手势就会失效,需要重写代理self.interactivePopGestureRecognizer?.delegate = self
,重写代理后没有重写代理里面的方法,于是把这里面的方法好好看了一下(可参考网上文章),把问题锁定在 gestureRecognizerShouldBegin
这个代理方法的实现上,在首页的时候,需要忽略手势,只有在push 到新的ViewController 后才需要识别手势:
extension BaseNavigationController {
//重写代理方法
func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
if (children.count <= 1) {
return false
}
return true
}
}
然后问题解决。
网友评论