UINavigationController交互式Pop手势仅在第一次使用时有效

时间:2018-06-20 06:23:00

标签: ios swift uinavigationcontroller interactivepopgesture

我已经在应用程序上工作了一段时间,才意识到在详细视图中向后滑动只会让我第一次回到主视图。即使它是第一次使用,它也不是很平滑。它没有立即进入主视图,而是一下子全部跳了起来,即使我慢慢滑动也是如此。它曾经可以正常工作,但是我还没有对此进行专门的测试,所以我不知道它何时停止工作以及导致该问题的原因。

关于我的应用程序设置的一些信息...

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

这两个都有TableView,并且都嵌入在导航控制器中。

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

我不相信我对任何后退按钮控件感到困惑。我已经浏览了我的代码和情节提要,找不到任何地方。这是最令人困惑的部分,因为这些问题(123)似乎都由于更改后退按钮而存在问题,或者可以通过输入以下内容来解决代码行:

self.navigationController.interactivePopGestureRecognizer.delegate = nil

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

这里是如何设置供参考的图片: enter image description here

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

2 个答案:

答案 0 :(得分:1)

来自 Alex Chase's answer :还要检查子 #include <string.h> #include <stdlib.h> #include <stdio.h> #include <unistd.h> #include <stdbool.h> bool exists(const char fname[]) { return access(fname, F_OK | X_OK) != -1; } bool find_in_path(const char name[], char *fullpath, size_t sz) { char *paths = strdup(getenv("PATH")); char *tmp = paths; // to use in free const char *item; bool found = false; while ((item = strsep(&paths, ":")) != NULL) { snprintf(fullpath, sz, "%s/%s", item, name); if (exists(fullpath)) { found = true; break; } } free(tmp); return found; } int main() { char fullpath[512]; bool found = find_in_path("uname", fullpath, sizeof(fullpath)); if (found) { printf("found: %s\n", fullpath); } return 0; } viewWillAppear 的覆盖。在交互式弹出期间调用此方法。

将它添加到 ViewControllers 并且它起作用了:

viewWillAppear

答案 1 :(得分:0)

您什么时候打self.navigationController.interactivePopGestureRecognizer.delegate = nil? 这样做肯定会禁用交互式弹出。听起来好像您是在某个UIViewController出现之后才调用此函数。

您要对UINavigationController进行哪些其他修改?您正在使用外观委托吗? 您在分类吗?如果是这样,您是否在所有方法覆盖中都调用super

还要检查子ViewController中对viewWillAppear的替代。在交互式弹出期间调用此方法。如果您在此方法中对主线程进行大量计算(或同步调用),则可能会导致帧丢失,从而导致动画不稳定。

希望这会有所帮助