我很难过: - \
我在商店里有一个遗留应用程序,我为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时,问题就出现了。
答案 0 :(得分:1)
我有同样的问题。在我添加了横向方向支持以查看导航控制器内的控制器之后,问题得以解决。
- (UIInterfaceOrientationMask)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskAll;
}