iOS - 实现UINavigation全屏滑动返回(二)

本文介绍如何在iOS应用中实现全屏滑动返回功能,通过自定义手势解决UINavigationController仅在边缘滑动返回的问题。文章详细阐述了思路,包括检查系统手势属性、添加自定义拖动手势并设置目标,以及解决滑动返回在根控制器中失效的bug。最后提供了源码实现。
摘要由CSDN通过智能技术生成

回顾

iOS - 实现UINavigation全屏滑动返回(一) 中我们实现了滑动返回的功能,但不是全屏滑动返回,得在左侧边缘轻扫才能滑动返回~
UINavigationController自带的只能在边缘轻扫才能滑动返回,这用户体验是不好的,接下来实现全屏滑动返回!

思路

既然自带的滑动返回只能是在边缘,那我们能不能修改使它触摸范围变大甚至全屏呢?先来看下系统手势有没有提供属性或方法供我们使用

NSLog(@"%@", self.interactivePopGestureRecognizer);

打印信息:

/*
<UIScreenEdgePanGestureRecognizer: 0x7fd542611e20; state = Possible; delaysTouchesBegan = YES; view = <UILayoutContainerView 0x7fd542706300>; target= <(action=handleNavigationTransition:, target=<_UINavigationInteractiveTransition 0x7fd542611ce0>)>>
*/

原来系统手势的类型为 UIScreenEdgePanGestureRecognizer ,转到定义,发现有一个属性

UIRectEdge edges

是个结构体

typedef NS_OPTIONS(NSUInteger, UIRectEdge) {
    UIRectEdgeNone   = 0,
    UIRectEdgeTop    = 1 << 0,
    UIRectEdgeLeft   = 1 << 1,
    UIRectEdgeBottom = 1 << 2,
    UIRectEdgeRight  = 1 << 3,
    UIRectEdgeAll    = UIRectEdgeTop | UIRectEdgeLef
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值