设置UINavigationController的委托后,interactivePopGestureRecognizer停止工作。为什么?

时间:2019-05-27 09:05:17

标签: ios swift uinavigationcontroller uigesturerecognizer

在我的代码中,导航控制器堆栈中的一个视图控制器将自身设置为其viewDidLoad中navigationController的委托。我这样做是为了为推送操作提供一个自定义动画器。我仅提供navigationController(_:animationControllerFor:from:to:)的实现,而没有其他提供。

我还确保在任何重写的方法中都不会丢失对super的任何调用。

但是这样做的副作用是交互式弹出手势已停止工作,即当我执行该手势时,什么也没发生。

在深入研究时,我发现这是由interactivePopGestureRecognizer的委托引起的。该委托是系统提供的。我没有在代码中的任何地方设置它。

我发现,当我设置navigationController的委托人时,interactivePopGestureRecognizer的委托人通过为{{1}返回 false 来阻止手势。 }。

我想知道为什么会这样。

我确实在stackOverflow herehere上找到了解决此问题的方法,但问题的原因还有其他原因。

我想学习的是这种情况的根本原因。为什么iOS在设置navigationController的委托时禁用该行为。

是否需要做其他事情才能使其正常工作?我的意思是使它正常工作,即系统为func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool提供的委托允许手势。不是通过编写替代方法代码来完成的,而是通过上面的链接完成的。

我也浏览了Apple的UINavigationController文档,但没有发现任何可以解释此问题的东西。

0 个答案:

没有答案