博客> iOS 右滑返回
iOS 右滑返回
2017-11-23 13:57 评论:0 阅读:264 SXT_小卒
ios 右滑返回

iOS-右滑返回

为面对屏幕大手小的尴尬问题,为了增加用户的体验度,所以在应用内加入了右滑返回,iOS原生的右滑返回只支持边缘返回。

问题解决: 1.右滑返回只在边缘返回 2.右滑返回引起手势的冲突,导致页面卡死 3.右滑返回具有局限性,某些页面不需要右滑手势不能取消(待解决)

右滑返回

为了在多个页面实现右滑返回,创建一个基础控制器BaseViewController,在基础控制器下实现如下代码:


- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.

//1.获取系统interactivePopGestureRecognizer对象的target对象
id target = self.navigationController.interactivePopGestureRecognizer.delegate;
//2.创建滑动手势,taregt设置interactivePopGestureRecognizer的target,所以当界面滑动的时候就会自动调用target的action方法。
//handleNavigationTransition是私有类_UINavigationInteractiveTransition的方法,系统主要在这个方法里面实现动画的。
UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] init];
[pan addTarget:target action:NSSelectorFromString(@"handleNavigationTransition:")];
//3.设置代理
pan.delegate = self;
//4.添加到导航控制器的视图上
[self.navigationController.view addGestureRecognizer:pan];

//5.禁用系统的滑动手势
self.navigationController.interactivePopGestureRecognizer.enabled = NO;
}

在滑动手势执行时,为避免手势带来的冲突,需要在首页禁止右滑手势

  - (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer       *)gestureRecognizer{
    //只有导航的根控制器不需要右滑的返回的功能。
    if (self.navigationController.viewControllers.count <= 1)
    {
        return NO;
    }
    return YES;
    }
收藏
0
sina weixin mail 回到顶部