iOS- 13滑動返回按鈕(全屏滑動)

圖示:


滑動返回功能

恢復(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;
}
效果圖:
效果圖:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容