圖示:
滑動返回功能
恢復(fù)滑動返回功能
** 分析:**
- 把系統(tǒng)的返回按鈕覆蓋
1.手勢失效
1.1 手勢被清空
1.2 手勢代理是不是出問題,導(dǎo)致手勢失效
#import "ZYNavigationController.h"
self.interactivePopGestureRecognizer.delegate = nil;
但是,此時,還有個bug,就是當(dāng)我們滑動到當(dāng)前棧頂控制器時,在滑動,在點擊設(shè)置,就會造成卡頓現(xiàn)象。又稱假死狀態(tài)。 - 假死狀態(tài):程序還在運行,但是界面死了。不能操作。
解決:根控制器,不需要滑動,需手動管理。
** 1.遵守代理**
@interface ZYNavigationController ()<UIGestureRecognizerDelegate>
@end
** 2.設(shè)置代理**
- (void)viewDidLoad {
[super viewDidLoad];
// 控制手勢什么時候觸發(fā),只有非控制器的時候才會觸發(fā)
self.interactivePopGestureRecognizer.delegate =self;
}
** 3.實現(xiàn)代理方法**
#pragma mark -UIGestureRecognizerDelegate
/*是否觸發(fā)手勢/
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
return self.childViewControllers.count > 1;
}
全屏滑動返回
為什么導(dǎo)航控制器的手勢不是全屏滑動
手勢圖
將上述viewDidLoad改為以下
- (void)viewDidLoad {
[super viewDidLoad];
// 控制手勢什么時候觸發(fā),只有非控制器的時候才會觸發(fā)
UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc]initWithTarget: self.interactivePopGestureRecognizer.delegate action:@selector(handleNavigationTransition:)];
[self.view addGestureRecognizer:pan];
pan.delegate = self;
self.interactivePopGestureRecognizer.enabled = NO;
}
效果圖:
效果圖: