backBarButtonItem与popViewController和滑动

时间:2013-11-12 12:24:33

标签: objective-c uinavigationcontroller ios7

我的应用程序逻辑是这样的: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 个答案:

答案 0 :(得分:1)

首先,如果没有任何代码,很难确定问题。

其次,你为什么不自己创建按钮,并为其添加一个目标,这个函数会解除/弹出视图控制器?