UINavigationController自定义animation可以防止从工作中滑动回去
我注意到一些奇怪的东西,可能是UINavigationController中的一个bug。 当你重写-navigationController:animationControllerForOperation:fromViewController:toViewController:
并返回nil(对于默认的animation行为),拖回手势不再起作用。 这个方法的文档说你应该返回“无,如果你想使用标准的导航控制器转换”。 我读到这个是返回零不应该防止默认行为发生。
我还发现,如果导航控制器的interactivePopGestureRecognizer.delegate中的某个对gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:
返回YES, gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:
Pop手势再次起作用。 然而,这个解决方法是有风险的,因为我们正在跺脚安装的默认代理,这是一个_UINavigationInteractiveTransition。
有没有我可以重写animationController方法,同时保留默认的拖动到回去的手势?
这个问题是相关的。
这个SO问题是关于相同的主题,这个答案可能会解决这个问题:
如果你已经子类UINavigationController,最简单的修正如下(iOS 9.3,Swift 2.2):
override func viewDidLoad() { super.viewDidLoad() interactivePopGestureRecognizer?.delegate = nil }
或者,在UIViewController的任何其他实例中:
override func viewDidLoad() { super.viewDidLoad() navigationController?.interactivePopGestureRecognizer?.delegate = nil }
实现委托方法navigationController(_:animationControllerFor:from:to:)
会禁用导航控制器的交互式popup手势识别器,但将手势的代理设置为零将重新启用它。
如果您只想在特定情况下启用手势,请参阅此答案 。
- – :发送到上的已释放实例的消息
- 在iOS7半透明导航栏中获取正确的颜色
- 如何从自己的项目导入自己的类到游乐场
- 使用xCode 7.3从swift 2中的URL播放video文件(mp4文件)?
- 在另一个类的应用程序委托中使用NSMutableArray
- 生成失败,错误命令/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc
- 如何使用swift将对象数组保存到NSUserDefault?
- iOS上的Google地方信息自动完成function – 无法加载搜索结果 – 请重试
- UICollectionView insertItemsAtIndexPaths:抛出exception