iOS创建滑动返回

时间:2013-07-10 07:29:57

标签: ios uinavigationcontroller uipangesturerecognizer uiswipegesturerecognizer ios7

我想像iOS 7那样进行反击。我对整个iOS开发仍然是新手,这就是我目前使用的。
目前我有一个平移手势,可以检测用户是否向后滑动,然后只是弹出导航控制器。

UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];
[self.view addGestureRecognizer:pan];


-(void)handlePan:(UIPanGestureRecognizer *)sender{
    CGPoint tran = [recognizer translationInView:recognizer.view];
    CGPoint vel = [recognizer velocityInView:recognizer.view];
    if(vel.x > 500 && tran.x > 100){
        [self.navigationController popViewControllerAnimated:YES];
    }
}

我希望前一个视图在手势上跟随手指,而不是仅仅将pop调用到root。例如,

SecondView Swiping between the views FirstView

3 个答案:

答案 0 :(得分:9)

这将需要一个自定义容器视图控制器。简单来说,你有一个视图控制器,它可以容纳2个视图控制器(左边是视图1,右边是视图2)。

将平移手势附加到容器视图,当用户移动时,您可以为每个子视图控制器计算适当的帧。例如。如果用户向右平移,则将视图2向右移动,并从左侧显示视图1(根据需要调用子视图控制器方法)。

当手势完成时,您应该检查最终位置以及平移的最终方向,以决定放置视图控制器的位置。例如如果您在屏幕上的视图1的90%右侧完成平移,则应在屏幕上完全移动视图1并在屏幕上查看2。如果你用50%的每一个完成,你应该使用平移的方向来决定哪个视图将保留在屏幕上。

答案 1 :(得分:1)

使用IIViewDeckController它更容易,它可以完成您想要的IIViewDeck GitHub

答案 2 :(得分:0)

我认为在这种情况下你应该使用UIScrollView,将滚动视图的内容大小设置为width_of_view * numberOfViews,并将所有视图水平添加到滚动视图。当用户在屏幕上滚动或滑动手指而不是显示下一个视图时。这里有一个Link of apple Doc会帮助你。不要忘记在XIB或代码中设置水平滚动启用。