程序員的平安夜是用來敲代碼的- -!
在iOS中昔逗,當(dāng)我們push出一個(gè)新的控制器的時(shí)候庐完,我們可以向右拖拽屏幕的左邊緣來返回(pop)到上一級(jí)控制器裆蒸,但是這個(gè)功能有兩個(gè)缺陷:
- 當(dāng)自定義導(dǎo)航控制器的返回按鈕時(shí),該空能失效
- 只能拖拽屏幕邊緣才能實(shí)現(xiàn)改功能
現(xiàn)在的手機(jī)屏幕越來越大必峰,用于已經(jīng)不太方便拖拽左邊屏幕邊緣了洪唐,為了界面的友好(自定義導(dǎo)航欄返回按鈕)和超贊的用戶體驗(yàn),我們需要自己來實(shí)現(xiàn)給push出來的控制器添加全局滑動(dòng)(返回)手勢(shì)吼蚁。
核心代碼
// pop的全屏手勢(shì)
-(void)popPanGesture{
// 創(chuàng)建一個(gè)全屏手勢(shì)覆蓋系統(tǒng)的方法
UIPanGestureRecognizer *popPanGesture = [[UIPanGestureRecognizer alloc]initWithTarget:self.interactivePopGestureRecognizer.delegate action:@selector(handleNavigationTransition:)];
// 控制手勢(shì)的觸發(fā),在代理方法中實(shí)現(xiàn)
popPanGesture.delegate = self;
// 把手勢(shì)添加到self.view
[self.view addGestureRecognizer:popPanGesture];
// 關(guān)掉系統(tǒng)的邊緣返回手勢(shì)
self.interactivePopGestureRecognizer.enabled = NO;
}
#pragma mark - UIGestureRecognizerDelegate
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{
return self.childViewControllers.count != 1;
}