昨天接到新的修改需求欢顷,要求有的頁面不能返回槽棍,必須強制用戶往下走流程,當時一聽差點給跪啦抬驴!無奈啊炼七,誰叫我是干開發(fā)的,改吧布持!初步一想豌拙,把返回按鈕關掉就OK啦,確實返回按鈕關掉就不能按返回按鈕返回上一頁啦题暖,竊喜0锤怠!胧卤!后來發(fā)現(xiàn)還有邊緣返回唯绍,這下頭疼了,只關掉按鈕明顯達不到效果枝誊,于是趕緊求助小伙伴况芒,各種支招,真是非常的感謝他們叶撒,一一試過绝骚,發(fā)現(xiàn)達不到效果。無奈之下痊乾,自己嘗試皮壁,歷經(jīng)磨難椭更,終于成功哪审,現(xiàn)在獻上代碼,希望對大家有幫助虑瀑!寫的不好的地方盡請見諒湿滓,本人第一次寫滴须!
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
self.isCanSideBack = NO;
//關閉ios右滑返回
if([self.navigationControllerrespondsToSelector:@selector(interactivePopGestureRecognizer)]) {
self.navigationController.interactivePopGestureRecognizer.delegate=self;
}
}
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer*)gestureRecognizer {
return self.isCanSideBack;
}
之前的寫法,測試之后發(fā)現(xiàn)有bug叽奥,如果是直接調(diào)用[self.navigationController popToRootViewControllerAnimated:YES];
不會走viewDidDisappear里的邏輯扔水,離開該頁以后,右滑返回失效了朝氓,所以做了如下的修改魔市,在離開頁面的方法里,調(diào)用[self resetSideBack];
即可保證只是當前頁的右滑返回被關閉赵哲,其他頁面的右滑返回依然正常待德!
- (void)viewDidDisappear:(BOOL)animated {
[superviewDidDisappear:animated];
[self resetSideBack];
}
/**
*恢復邊緣返回
*/
- (void)resetSideBack {
self.isCanSideBack=YES;
//開啟ios右滑返回
if([self.navigationControllerrespondsToSelector:@selector(interactivePopGestureRecognizer)]) {
self.navigationController.interactivePopGestureRecognizer.delegate = nil;
}
}
補充說明:實現(xiàn)類需要繼承
<UIGestureRecognizerDelegate>
協(xié)議,而- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer*)gestureRecognizer
是系統(tǒng)自己調(diào)用的枫夺!