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