iOS 侧滑返回

    在项目中遇到,需求:A 界面存在导航控制器 push 到B界面隐藏导航栏,现在需要从B界面侧滑返回A界面。

直接上代码:

A (controller):

.h 文件

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController

@end

.m文件

#import "ViewController.h"

#import "ViewController2.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {

    [super viewDidLoad];

    self.view.backgroundColor = [UIColor redColor];

    // Do any additional setup after loading the view, typically from a nib.

}

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{

    ViewController2 * vc2 = [[ViewController2 alloc] init];

    [self.navigationController pushViewController:vc2 animated:YES];

}

- (void)viewWillAppear:(BOOL)animated

{

    [super viewWillAppear:animated];

    [self.navigationController setNavigationBarHidden:NO animated:YES];

}

@end

B(viewcontroller):

.h文件

#import <UIKit/UIKit.h>

NS_ASSUME_NONNULL_BEGIN

@interface ViewController2 : UIViewController

@end

NS_ASSUME_NONNULL_END

.m文件

#import "ViewController2.h"

@interface ViewController2 ()<UIGestureRecognizerDelegate>

@property(nonatomic,strongid  interactivePopDelegate ;

@end

@implementation ViewController2

- (void)viewDidLoad {

    [super viewDidLoad];

    self.view.backgroundColor = [UIColor yellowColor];

}

// 在页面将要出现时,记录原始侧滑手势代理对象,并将手势代理设置为当前页面

- (void)viewWillAppear:(BOOL)animated

{

    [super viewWillAppear:animated];

    self.interactivePopDelegate = self.navigationController.interactivePopGestureRecognizer.delegate;

    self.navigationController.interactivePopGestureRecognizer.delegate = self;

     [self.navigationController setNavigationBarHidden:YES animated:YES];

}

// 在页面消失时,还原侧滑手势代理对象

- (void)viewDidDisappear:(BOOL)animated

{

    [super viewDidDisappear:animated];

     self.navigationController.interactivePopGestureRecognizer.delegate = self.interactivePopDelegate;

    self.interactivePopDelegate = nil;

}

// 实现手势代理,为了防止影响其他手势,可以判断一下手势类型

- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer

{

    if ([gestureRecognizer isKindOfClass:[UIScreenEdgePanGestureRecognizer class]]) {

        return YES;

    }

//    ...... 其他手势的处理

    return NO;

}

Demo:https://github.com/WuMu123Love/LateralSpreadsToReturn

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wumu_Love

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值