我的应用程序逻辑是这样的: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而没有任何动画。
所以有什么解决方案吗?请帮帮我。