上一篇分析了為什么自定義返回按鈕后,系統(tǒng)默認(rèn)的邊緣手勢(shì)返回會(huì)失效,以及解決的一些辦法,但是,這個(gè)手勢(shì)只是在邊緣有效,無法達(dá)到全屏有效,最理想的是全屏手勢(shì)有效,經(jīng)典的五步:
1.自定義滑動(dòng)手勢(shì)識(shí)別器,讓系統(tǒng)的私有類對(duì)象去調(diào)用系統(tǒng)提供的返回切換頁面功能
UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self.interactivePopGestureRecognizer.delegate action:@selector(handleNavigationTransition:)];
2.加到導(dǎo)航控制器當(dāng)前的棧頂視圖上,可以理解為手勢(shì)識(shí)別器類似于一個(gè)膜貼到view上
[self.view addGestureRecognizer:pan];
3.設(shè)置pan手勢(shì)識(shí)別器的代理為當(dāng)前對(duì)象,用于實(shí)現(xiàn)代理方法,控制非控制器下才可以響應(yīng)滑動(dòng)返回
pan.delegate = self;
4.關(guān)閉邊緣手勢(shì)識(shí)別器
self.interactivePopGestureRecognizer.enabled = NO;
5.實(shí)現(xiàn)代理方法
#pragma mark -UIGestureRecognizerDelegate
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
return self.childViewControllers.count > 1;
}