我的 App 逻辑是这样的:VCA => VCB,并且在 VCB 中有一个带有左右滑动功能的滚动视图。一些代码有助于理解 VCB 中的结构:
self.scrollView.pagingEnabled = YES;
self.scrollView.directionalLockEnabled = YES;
self.scrollView.contentSize =CGSizeMake(CGRectGetWidth(self.scrollView.frame) * numberPages, CGRectGetHeight(self.scrollView.frame));
所以我想要的是水平列出一些页面并左右滑动来导航。每个页面都有自己的视图控制器(VCB 的子视图控制器),我像这样添加它们:
if (controller.view.superview == nil)
{
[self addChildViewController:controller];
[self.scrollView addSubview:controller.view];
[controller didMoveToParentViewController:self];
}
到目前为止,它适用于 iOS 6。我可以滑动以更改页面。每个页面内的所有功能也可以正常工作。
然后问题就出在iOS 7的新功能上,向右滑动自动调用popViewControllerAnimated:
,效果和点击返回键一样。为了解决冲突,我禁用了interactivePopGestureRecognizer:self.navigationController.interactivePopGestureRecognizer.enabled = NO;
它工作正常,当我只想滑动更改页面时没有强制弹出。
现在真正的问题。我在导航栏上设置了一个后退按钮(backBarButtonItem)。每次我使用该按钮从 VCB 弹出回到 VCA 并且当前页面不是第一页(这意味着左侧至少有一个页面)时,弹出动画就像首先将页面更改为左侧一个,然后立即显示 VCA,没有任何动画。
那么有什么解决办法吗?请帮我。