【问题标题】:How to swipe left or right to push or pop ViewContrller in iOS如何在 iOS 中向左或向右滑动以推送或弹出 ViewController
【发布时间】:2014-05-03 12:54:50
【问题描述】:

我想在我的应用程序中滑动以推送或弹出 ViewControllers ,我知道我可以向其中添加滑动手势。 但是当我滑动屏幕时,我希望当前的 ViewController 跟随我的滑动手势,而下一个 ViewController 只需滑动即可。我该怎么做,谢谢!

【问题讨论】:

标签: iphone ios objective-c


【解决方案1】:

UINavigationController 不可能;您必须构建自己的导航控制器(应该很容易),其中包含 UIPanGestureRecognizer

iOS 7 的编辑:您可能想要使用 UIScreenEdgePanGestureRecognizer

【讨论】:

    【解决方案2】:

    手势识别器具有与按钮类似的操作方法。只需将其放在 action 方法中即可:

    NextViewController *next = [[NextViewController alloc] init ....];
    [self.navigationController pushViewController:next animated:YES];
    

    【讨论】:

    • 我知道。但我希望 ViewController 可以用我的手指移动
    • @lixiaoyu,好吧,那不是通常意义上的“推”或“弹出”,你需要用平底锅而不是滑动来做,因为滑动是一个离散的手势.
    【解决方案3】:

    阅读手势识别器。您可以创建它们并将其添加到对象上。 例如

    UILongPressGestureRecognizer *longTap = [[UILongPressGestureRecognizer alloc] 
                                             initWithTarget:self 
                                             action:@selector(longPress:)];
    longTap.minimumPressDuration = 1.0;
    [cell addGestureRecognizer:longTap];
    

    在这里,我创建了 LongPress 识别器并将其添加到我的单元格中。如果我在我的单元格上长按(1.0 秒),它将调用选择器(长按:)。长按我可以编写任何代码。

    -(void)longPress : (UILongPressGestureRecognizer *)rec {
       if (rec.state == UIGestureRecognizerStateBegan) {
       NSLog (@"I've longPressed");
       }
    }
    

    您可以通过相同的方式使用不同的识别器。

    关于推送和弹出。它们是导航控制器的方法。 Push - 在你向他展示的控制器上前进;

    NextController *goNext = [[NextViewController alloc] init];
    [self.navigationController pushViewController:goNext animated:YES];
    

    它将转到 NextController。 Pop - 返回上一个控制器。

    这里不需要显示之前的控制器。只是对 navController 说回来

     [self.navigationController popViewControllerAnimated:YES];
    

    【讨论】:

      猜你喜欢
      • 2011-03-29
      • 1970-01-01
      • 1970-01-01
      • 2011-10-02
      • 2020-01-29
      • 1970-01-01
      • 2019-04-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多