点击屏幕会导致当前控制器返回到先前的控制器

时间:2018-10-08 20:12:40

标签: ios objective-c uistoryboardsegue xcode10

每次我点击视图控制器顶部的某个位置时,它将返回上一个视图。根控制器不受影响,因为它也没有要返回的任何内容。我的所有View Controller均受到影响。 (请阅读更新3)

我尝试过的事情:

  1. 寻找不必要的手势识别器。 (结果:检查列表手势时收到零。)
  2. 我认为我可能不小心将IBOutlet添加或留在了视图或其他内容上。 (结果:没有不必要的IBOutlets。)
  3. 我从视图禁用了用户交互,以查看是否会受到影响。 (结果:在我再次启用用户交互之前,该错误似乎消失了。)
  4. 我试图做一些研究,但没有得到想要的结果。

在绿线上方点击将使View Controller返回到先前的Controller。 enter image description here

我对Objective-C和Xcode还是比较陌生,所以我不知道自己是否犯了菜鸟错误。

更新(请阅读更新3)

什么都没做,不过我尝试过以下几件事:

  1. 记录每个用户的操作。
  2. 使用新的视图控制器创建了一个新项目。
  3. 打开一个先前的项目以测试其视图控制器。
  4. 已卸载并重新安装的Xcode。

所有尝试仍然伴随着那个奇怪的错误。

更新2(请阅读更新3)

我已经决定对这个问题进行创可贴。由于该错误在单击按钮时不起作用,因此我将约束放在一个空按钮上,将其放在背景图片上方,并在敲击按钮时删除了效果。

我认为这可以工作,但是屏幕上有一些斑点可以激活该错误。我进行了实验,发现ui元素的某些部分激活了该错误。 (例如:Stackview中的某些标签,文本字段的顶部,开关,UICollectionView的顶部等)

我已禁止某些ui元素的用户交互。不幸的是,并不是所有的ui元素都可以被禁用,因为某些元素需要用户交互。

我还发现,用三个手指在屏幕上敲击会激活该错误。

这是我在屏幕上尝试多次轻按时在控制台中收到的错误代码:

<_ UISystemGestureGateGestureRecognizer:0x2822fc1e0>:手势:在下次触摸之前无法接收系统手势状态通知

更新3

再次使用该代码。我相信我已经找到了导致问题的原因,但没有找到解决方法。

我认为这与故事板的segue有关,或者至少与所使用的过渡有关。如果我将种类设置为“显示(例如,推送)”,则效果很好,但是如果我将种类设置为“以模态形式显示”,并且将其设置为“部分卷曲”,则该错误就可以了。

旁注:这就是我测试的方式。我创建了一个新项目(我认为语言无关紧要)。该项目有两个视图控制器。一个按钮,每个按钮都指向每个视图控制器。 Segue 1的类型为“以模态形式呈现”,过渡的类型为“局部卷曲”。 Segue 2位于第二个视图控制器上,其类型为“ Show(例如Push)”。要测试该错误,请点击屏幕顶部的。如果该错误有效,则应该显示部分卷曲过渡,但反之,然后将用户送回第一个视图控制器。

1 个答案:

答案 0 :(得分:-1)

也许您正在经历来自导航控制器的标准向后滑动手势。多数民众赞成在这种情况下尝试此代码:

Objective-C:

if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
    self.navigationController.interactivePopGestureRecognizer.enabled = NO;
}

迅速:

navigationController?.interactivePopGestureRecognizer?.isEnabled = false