首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >UINavigationController inside UIPopoverController 'Back‘动画在风景中的怪异

UINavigationController inside UIPopoverController 'Back‘动画在风景中的怪异
EN

Stack Overflow用户
提问于 2015-10-25 18:19:53
回答 1查看 482关注 0票数 16

我难倒了:-\

我在商店里有一个旧版应用程序,我正在为iOS 8/9刷新它。它是几年前编写的(ARC之前),是iPhone和iPad的通用应用程序。除了这个之外,现在一切都正常工作了。

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

在肖像(和肖像倒置)中,一切都像预期的那样工作。

然而,在Landscape中,按“后退”(标准的后退而不是自定义的后退)会产生奇怪的动画-传出的控制器跳到弹出窗口之外,并迅速滑出屏幕(方向取决于设备所在的方向),而传入的控制器只是在传出控制器跳出弹出窗口时立即出现。我不得不使用缓慢的动画来确定这一点,因为在全速运行时,它看起来就像是一个巨大的故障。

这里有一个简短的20 second movie showing the defect here;请注意在14秒内点击'Locations‘时会发生什么。

如果我将VC堆栈表示为表单,而不是UIPopover,则无论方向如何,一切都会按预期工作。我也尝试过较新的UIPopoverPresentationController,也遇到了同样的问题,这让我有点惊讶。

这发生在我正在展示的两个弹出窗口上(一个从工具栏的左侧,一个从工具栏的右侧),它们的内部结构都非常不同。唯一的共同点是它们在UIPopover中有一个UINavigationController。

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

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

在上下文中,这个项目没有故事板,很少使用xibs,通常在loadView中的代码中构造UI -它实际上是一个旧的应用程序……

谢谢你的指点。不确定任何代码在这里会有多大帮助,但这里是相关弹出窗口的演示文稿;

代码语言:javascript
复制
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];

我得到了以下相同的缺陷,新的风格代码;

代码语言:javascript
复制
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时,也会出现同样的问题。

EN

回答 1

Stack Overflow用户

发布于 2016-03-10 21:23:07

我也有同样的问题。在我为导航控制器中的视图控制器添加了横向支持后,这个问题被修复了。

代码语言:javascript
复制
- (UIInterfaceOrientationMask)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskAll;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33328544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档