自iOS7之后NavigationController中体统自带手势返回效果,这个功能大大提升了APP的用户体验度,特别是随着iPhone的屏幕越来越大这个功能就更有提出的体现。目前一个成熟的应用基本上都会加上这个功能。

系统自带而默认也是打开的,因此不需要去做过多的操作。而目前的应用来说系统自带的导航控制器基本不能满足大多应用的需要,很多东西就需要重写。就比如导航栏里的返回按钮,系统的按钮是蓝色的字体和图标。自定义返回按钮时想要滑动返回效果依然起作用这是就需要做下简单的操作

if (iOS7)

{

    self.navigationController.interactivePopGestureRecognizer.delegate = self;

}

需要把代理设置为当前控制器。没错 就是这么简单就o了。(如果自定义了导航栏,系统导航栏隐藏掉就不需要设置这个代理)

self.navigationController.interactivePopGestureRecognizer.enabled = YES;至于这句设不设置都没关系,因为系统默认就是yes。但是在你不需要手势的时候就得设为NO了。


    完成以上操作,很多人都认为大功告成了,可是你可以试试在首页的时候右滑几次。没错,没任何问题 ;但是你再点击可以跳转到其他页面的一个按钮 这是你会发现跳不过去了,你的把应用退到桌面再打开应用 自动就会掉到上次点击需要跳转的页面。原因是你在首页右滑它想滑出点东西,但是没有的可以滑了这时再点击跳转又想push出一个控制器,导致向左有向右然后就卡在了中间。

- (void)viewDidAppear:(BOOL)animated
{
super viewDidAppear:animated];
if (iOS7) {
        self.navigationController.interactivePopGestureRecognizer.enabled = NO;
    }

} 似乎必须是viewDidAppear这个方法,以上问题就解决了。

似乎xib也会有手势返回有影响,之前在另外一个项目中遇到过,把xib改掉就解决了。