首页 > 代码库 > 全屏滑动返回
全屏滑动返回
#import "XMGNavigationViewController.h"@interface XMGNavigationViewController ()<UIGestureRecognizerDelegate>@end@implementation XMGNavigationViewController- (void)viewDidLoad { [super viewDidLoad]; UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self.interactivePopGestureRecognizer.delegate action:@selector(handleNavigationTransition:)]; [self.view addGestureRecognizer:pan]; // 控制手势什么时候触发,只有非根控制器才需要触发手势 pan.delegate = self; // 禁止之前手势 self.interactivePopGestureRecognizer.enabled = NO; // 假死状态:程序还在运行,但是界面死了. /* 为什么导航控制器的手势不是全屏滑动 => */ }#pragma mark - UIGestureRecognizerDelegate// 决定是否触发手势- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{ return self.childViewControllers.count > 1;}// <_UINavigationInteractiveTransition: 0x7f9c948302a0>:手势代理/* UIPanGestureRecognizer UIScreenEdgePanGestureRecognizer:导航滑动手势 target=<_UINavigationInteractiveTransition 0x7fdc4a740440>) action=handleNavigationTransition: <UIScreenEdgePanGestureRecognizer: 0x7fdc4a740120; state = Possible; delaysTouchesBegan = YES; view = <UILayoutContainerView 0x7fdc4a73e690>; target= <(action=handleNavigationTransition:, >> */- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated{ if (self.childViewControllers.count > 0) { // 非根控制器 // 恢复滑动返回功能 -> 分析:把系统的返回按钮覆盖 -> 1.手势失效(1.手势被清空 2.可能手势代理做了一些事情,导致手势失效) // 设置返回按钮,只有非根控制器 viewController.navigationItem.leftBarButtonItem = [UIBarButtonItem backItemWithimage:[UIImage imageNamed:@"navigationButtonReturn"] highImage:[UIImage imageNamed:@"navigationButtonReturnClick"] target:self action:@selector(back) title:@"返回"]; } // 真正在跳转 [super pushViewController:viewController animated:animated]; }@end
全屏滑动返回
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。