您可以从屏幕左边缘轻扫以返回导航堆栈。但是在我的应用程序中,此行为与我的自定义左侧菜单冲突。因此,是否可以在UINavigationController中禁用此新手势?
答案 0 :(得分:1)
您希望从控制器中启用/禁用它
迅速:
self.navigationController?.interactivePopGestureRecognizer?.isEnabled = false // or true
ObjC:
self.navigationController.interactivePopGestureRecognizer.enabled = NO; // or YES
答案 1 :(得分:1)
对于我的用例,仅在单个视图控制器中将其禁用非常重要,因为该视图必须具有一个可以轻松干扰该手势的滑块。因此,我尝试按照建议在viewWillAppear中禁用它,该方法起作用了,但是在随后推送的控制器中一直禁用它。
然后我尝试在viewWillDisappear中启用它,但是确实以某种方式破坏了该应用程序。这意味着,如果我在子视图控制器中确实尝试使用向后滑动,则该应用程序冻结了。将其放到背景中并从那里重新打开可以消除冻结,但是具有讨厌的副作用,例如黑色背景,在错误的位置缺少搜索栏和其他ui元素。
最终使它对我有用的“窍门”是
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
navigationController?.interactivePopGestureRecognizer?.delegate = nil
}
并且没有将其设置回真正的代表,到目前为止,它确实可以工作
答案 2 :(得分:0)
此功能集并不是您所建议的新功能。如果没有错,它是在iOS 7中实现的,可以在所有后续发行版中找到。它称为InteractivePopGestureRecognizer。
对我们来说幸运的是,Apple提供了一种禁用它的方法。在适当的位置将其设置为false。
self.navigationController?.interactivePopGestureRecognizer?.isEnabled = false