UIPopoverController中的UINavigationController'返回'景观中的动画很奇怪

时间:2015-10-25 10:19:53

标签: ios ipad uinavigationcontroller uipopovercontroller

我很难过: - \

我在商店里有一个遗留应用程序,我为iOS 8/9刷新了一下。它是几年前写的(前ARC),是iPhone和iPad的通用应用程序。现在一切都在与此分开......

在iPad上,屏幕顶部有一个工具栏,我提供了一个UIPopoverControllers,其中包含一个UINavigationController,其中包含一些可以深入查看的标准UITableViewController类型屏幕。

在肖像(和肖像颠倒)中,一切都按预期工作。

在风景中,按下'返回' (标准背面不是自定义的)导致奇怪的动画 - 传出控制器跳出弹出框并快速滑出屏幕(方向受设备所在的方向控制),而传入控制器只是在输出控制器时立即出现跳到popover外面。我不得不使用慢动画来确定它是全速,它看起来像一个巨大的故障。

20 second movie showing the defect here;请注意点击“地点”时会发生什么?在14秒内。

如果我将VC堆栈作为表单而不是UIPopover,那么无论方向如何,一切都按预期工作。我也尝试过更新的UIPopoverPresentationController并遇到了同样的问题,这让我感到很惊讶。

这种情况发生在我呈现的两个弹出框中(一个来自工具栏左侧,一个来自工具栏右侧),它们都有非常不同的内部结构。唯一的共同因素是它们在UIPopover中有一个UINavigationController。

我已经使用视图调试器来检查视图层次结构,但似乎没有什么不寻常的,我无法在故障期间捕获视图,无论我运行模拟器有多慢,所以我怀疑我和#39;我看到了弹出窗口或导航控制器的内部问题。

有没有人见过类似的东西?我在设备上(iOS 8.4)和iOS 8和9的模拟器中看到了这一点。

对于上下文,这个项目没有故事板,很少使用xib,并且通常在loadView中的代码中构建UI - 它实际上是一个旧的应用程序......

感谢您的任何指示。不确定任何代码在这里会有多大帮助,但这里有关于popover的介绍;


LocationsViewController* locationsvc = [[LocationsViewController alloc] init];

UINavigationController *localNavigationController = [[UINavigationController alloc] initWithRootViewController:locationsvc];
localNavigationController.navigationBar.barStyle = UIBarStyleBlackTranslucent;
[locationsvc release];

UIPopoverController* aPopover = [[UIPopoverController alloc] initWithContentViewController:localNavigationController];

aPopover.delegate = self;
aPopover.backgroundColor = [UIColor colorWithWhite:0 alpha:0.9];
self.locationPopoverController = aPopover;        
[aPopover release];
[localNavigationController release];

[locationPopoverController presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];

我使用以下新的味道代码获得相同的缺陷;


UINavigationController *destNav = [[UINavigationController alloc] initWithRootViewController:locationsvc];

locationsvc.preferredContentSize = CGSizeMake(320,280);

UIPopoverPresentationController *newPresentationController;
destNav.modalPresentationStyle = UIModalPresentationPopover;
newPresentationController = destNav.popoverPresentationController;
newPresentationController.barButtonItem = sender;
destNav.navigationBarHidden = NO;
[self presentViewController:destNav animated:YES completion:nil];

当我使用UIModalPresentationPageSheet但是当我使用UIModalPresentationFormSheet时,问题就出现了。

1 个答案:

答案 0 :(得分:1)

我有同样的问题。在我添加了横向方向支持以查看导航控制器内的控制器之后,问题得以解决。

- (UIInterfaceOrientationMask)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskAll;
}