返回按钮与popViewController和滑动手势

3

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

1

首先,没有任何代码片段很难确定问题所在。

其次,为什么不自己创建按钮,并为其添加一个目标,一个可以取消/弹出视图控制器的函数?


1
非常感谢您的回答。我已经编辑了问题并添加了一些代码和更多的解释。 - Aoke Li
关于使用自定义返回按钮,我认为对于iOS 7来说,返回按钮不会出现在正确的位置,因为操作系统留下了一些地方给那个"<"箭头。所以有没有什么直接解决这个问题的方法呢?再次感谢。 - Aoke Li
当出现这种差异时,您是通过编程还是Storyboard/XIB实现的? - Joe Razon
1
谢谢,看起来间隙根本没有发生。可能只是针对测试版本。很抱歉回复时间这么长。 - Aoke Li

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接