参考链接:
https://www.jianshu.com/p/6498ececc22f
https://juejin.im/entry/57fcd57a67f356005886e867
https://www.jianshu.com/p/e0fb249a77b4
https://blog.csdn.net/howlaa/article/details/62418074
https://www.jianshu.com/p/6498ececc22f
https://juejin.im/entry/57fcd57a67f356005886e867
https://www.jianshu.com/p/e0fb249a77b4
https://blog.csdn.net/howlaa/article/details/62418074
让滑动返回手势生效
如果使用自定义的按钮去替换系统默认返回按钮,会出现滑动返回手势失效的情况。解决方法也很简单,只需要重新添加导航栏的
首先为ViewContoller添加
interactivePopGestureRecognizer的delegate即可。首先为ViewContoller添加
UIGestureRecognizerDelegate协议
然后设置代理
self.navigationController.interactivePopGestureRecognizer.delegate = self;
至此,我们已经将返回按钮替换为我们的自定义按钮,并使滑动返回重新生效。接下来,我们继续来解决交互上的问题。
监听控制器滑动返回
当我们用手势滑动返回是需要监听他的返回事件,在
UIViewController (UIContainerViewControllerCallbacks)这个分类里有两个方法可以监听- (void)willMoveToParentViewController:(UIViewController *)parent {
NSLog(@"将要返回");
}
- (void)didMoveToParentViewController:(UIViewController *)parent {
NSLog(@"返回结束");
}
滑动返回从有导航栏到无导航栏界面的问题
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
[self.navigationController setNavigationBarHidden:NO animated:NO];
}
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:YES];
[self.navigationController setNavigationBarHidden:YES animated:animated];
}
这个animated要根据自己项目实际情况来设置。禁止单个界面的滑动返回
1.禁止页面左侧侧滑
2.如果需要仅仅此界面禁止返回,其他界面正常的话,需要在页面即将消失的时候开放侧滑
-
//禁止页面左侧滑动返回,注意,如果仅仅需要禁止此单个页面返回,还需要在viewWillDisapper下开放侧滑权限
-
// 禁用返回手势
-
if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
-
self.navigationController.interactivePopGestureRecognizer.enabled = NO;
-
}
2.如果需要仅仅此界面禁止返回,其他界面正常的话,需要在页面即将消失的时候开放侧滑
-
// 开启返回手势
-
if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
-
self.navigationController.interactivePopGestureRecognizer.enabled = YES;
-
}
评论
发表评论