其實(shí)只需在導(dǎo)航欄控制器中加入下面這句代碼就OK了
self.navigationController.interactivePopGestureRecognizer.delegate = (id)self;
以上只是還原系統(tǒng)的邊緣側(cè)滑效果,如果要實(shí)現(xiàn)整個(gè)屏幕都能側(cè)滑返回則需要我們自己來寫下方法:
setp1:需要獲取系統(tǒng)自帶滑動(dòng)手勢的target對象
id target = self.navigationController.interactivePopGestureRecognizer.delegate;
setp2:創(chuàng)建全屏滑動(dòng)手勢~調(diào)用系統(tǒng)自帶滑動(dòng)手勢的target的action方法
UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:target action:@selector(handleNavigationTransition:)];
step3:設(shè)置手勢代理~攔截手勢觸發(fā)
pan.delegate = self;
step4:別忘了~給導(dǎo)航控制器的view添加全屏滑動(dòng)手勢
[self.view addGestureRecognizer:pan];
step5:將系統(tǒng)自帶的滑動(dòng)手勢禁用
self.navigationController.interactivePopGestureRecognizer.enabled = NO;
steo6:還記得剛剛設(shè)置的代理嗎够傍?下面方法什么時(shí)候調(diào)用甫菠?在每次觸發(fā)手勢之前都會(huì)詢問下代理,是否觸發(fā)冕屯。
這個(gè)方法就是攔截手勢觸發(fā)的方法.
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{
return NO;則不需要觸發(fā)滑動(dòng)手勢
return YES;則需要觸發(fā)滑動(dòng)手勢
}
OK 基本就是這個(gè)樣子了