0

我已经在一个应用程序上工作了一段时间,并且刚刚意识到在详细视图中向后滑动只会让我第一次返回主视图。它也不顺利,即使它是第一次工作。即使我缓慢地滑动,它也不会顺利进入主视图,而是立即跳跃。它曾经可以正常工作,但我没有专门对此进行测试,所以我不知道它什么时候停止工作以及我改变了什么导致这个。

一点关于我的应用程序是如何设置的......

我有一个拆分视图控制器,它连接到我的MasterTableViewControllerDetailViewController.

两者都有 TableView 并嵌入在导航控制器中。

我已对其进行了设置,以便应用程序最初加载到 MasterTableViewController 而不是立即加载到 DetailViewController,但即使我将其取出,交互式弹出手势也不起作用。

我不相信我弄乱了任何后退按钮控件。我查看了我的代码和情节提要,但找不到任何我拥有的地方。这是最令人困惑的部分,因为这些问题(123)似乎都有因更改后退按钮而产生的问题,或者可以通过输入以下代码行来解决:

self.navigationController.interactivePopGestureRecognizer.delegate = nil

将其添加到我的代码中似乎对其行为方式没有影响。

这是如何设置的图片以供参考: 在此处输入图像描述

我通常可以自己解决这些问题,但这个问题让我感到困惑,因为它第一次有效,但其他任何时候都无效。据我所知,第一次和其他人之间没有任何变化。我不知道是否有其他人遇到过同样的问题,但是对于为什么会发生这种情况的任何帮助将不胜感激。如果需要,我可以提供代码或回答有关我如何做某些事情的问题。我没有放任何东西,因为有太多不同的东西控制着这件作品,我不知道从哪里开始。

4

2 回答 2

0

你什么时候打电话self.navigationController.interactivePopGestureRecognizer.delegate = nil?这样做肯定会禁用交互式弹出。听起来你可能会在某个UIViewController出现后调用它。

您还进行了哪些其他修改UINavigationController?你在使用外观委托吗?你是子类吗?如果是这样,您是否调用super了所有方法覆盖?

viewWillAppear还要检查您在子 ViewControllers 中的覆盖。在交互式弹出期间调用此方法。如果您在此方法中的主线程上进行大量计算(或同步调用),则可能会导致丢帧,从而导致动画断断续续。

希望这可以帮助

于 2018-06-20T07:09:23.787 回答
0

来自Alex Chase 的回答viewWillAppear:还要检查您对in child的覆盖ViewControllers。在交互式弹出期间调用此方法。

将其添加到viewWillAppear并且有效:

   override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        navigationController?.interactivePopGestureRecognizer?.delegate = self

    }
于 2021-02-10T15:34:10.837 回答