【问题标题】:Pop view controller using Screen edge pan gesture recogniser not following the thumb使用不跟随拇指的屏幕边缘平移手势识别器的弹出视图控制器
【发布时间】:2016-06-28 09:53:19
【问题描述】:

一旦我添加了自定义栏导航栏按钮项,我就无法使用默认功能返回。我希望能够使用“从边缘滑动”返回。

我已经添加了边缘平移手势识别器并将其连接到@IBAction,但是一旦识别到平移手势,就会完全取消操作。

当前视图不会慢慢跟随我的拇指移动(如在其他应用中看到的那样),而是使用预定义的动画移出。

如何使用 Edge Pan Gesture Recognizer 制作跟随我的拇指的动画?

@IBAction func edgeSwipe(sender: AnyObject) {
    navigationController?.popViewControllerAnimated(true)
}

【问题讨论】:

  • 为什么系统提供的手势不起作用?你试过this吗?
  • @beyowulf 这不起作用,因为我在左侧栏按钮项中添加了一个按钮。我在这里添加了一个按钮,因为我想访问 UIButton 的一些样式功能。但是,添加一个普通的 Bar Button Item(如果您只想自定义标题)也会使系统提供的手势停止工作。对于第二部分:我刚刚关注了您的链接,并且能够恢复与默认系统实现相同的回扫行为。
  • @beyowulf ,你指出了我正确的方向,我想奖励你。但唯一的方法是提供答案。因此,如果您至少提供一个简单的答案,您将获得赏金,这取决于您:)
  • 不,没关系。编码愉快!

标签: swift cocoa-touch uinavigationcontroller uigesturerecognizer


【解决方案1】:

无需添加边缘平移手势识别器。按照@beyowulf 的建议,我已经能够实现滑动返回功能,其行为方式与默认系统实现的行为方式相同 - 当我滑动它以将其关闭时,视图边缘跟随我的拇指。

所以我从情节提要中删除了ScreenEdge Pan Gesture Recogniser,并删除了相关的@IBAction

我已经让我的第一个视图控制器成为interactivePopGestureRecognizer 的代表。代码如下:

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        navigationController?.interactivePopGestureRecognizer?.delegate = self
    }
}

extension ViewController: UIGestureRecognizerDelegate {

    func gestureRecognizerShouldBegin(gestureRecognizer: UIGestureRecognizer) -> Bool {
        return navigationController?.viewControllers.count > 1 ? true : false
    }
}

【讨论】:

  • 这适用于 2020 年,但我很想知道我们如何在全球范围内使用它,这意味着我不想在每个导航控制器中添加。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多