获取有关 UINavigationController 中不成功的向后滑动手势的通知

Posted

技术标签:

【中文标题】获取有关 UINavigationController 中不成功的向后滑动手势的通知【英文标题】:Get notified about unsuccessful back swipe gestures in UINavigationController 【发布时间】:2015-10-08 21:54:21 【问题描述】:

我有一个 UINavigationController 子类,它管理自定义导航栏。此导航栏的外观取决于顶视图控制器。我向顶视图控制器询问-pushViewController:animated:-popViewControllerAnimated: 发生时要显示的栏的类型。

问题是,当用户开始滑动时会播放导航栏类型更改,但我找不到任何告诉我滑动成功与否的事件,所以如果用户取消滑动,我坚持前一个视图控制器在导航堆栈中具有所需的导航栏外观。

我试过UINavigationControllerDelegate,但-navigationController:didShowViewController:animated:-navigationController:didShowViewController:animated: 都没有被调用。我的第二个想法是使用interactiveGestureRecognizer,但它似乎在成功和取消向后滑动时都成功结束,并且在调用识别器事件时topViewController 也仍然相同。

我知道,顶视图控制器的 -viewDidAppear 将在取消滑动时再次被调用,但我不希望我的用户在他们的控制器中实现任何逻辑来支持我的导航实现。

有什么想法吗?

【问题讨论】:

【参考方案1】:

尝试使用 UINavigationControllerDelegate,你可以依靠它的回调来知道 viewController 什么时候会被显示。

Getting interactivePopGestureRecognizer dismiss callback/event

【讨论】:

以上是关于获取有关 UINavigationController 中不成功的向后滑动手势的通知的主要内容,如果未能解决你的问题,请参考以下文章

UINavigationController 风格

全屏显示 ViewController

多控制器

UINavigationControllerDelegate 不起作用

ios 获取真机设备有关信息

从 API 获取数据并将获取的数据作为参数传递给其他 API 以获取有关数据?