我难倒了:-\
我在商店里有一个旧版应用程序,我正在为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 -它实际上是一个旧的应用程序……
谢谢你的指点。不确定任何代码在这里会有多大帮助,但这里是相关弹出窗口的演示文稿;
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时,也会出现同样的问题。
发布于 2016-03-10 21:23:07
我也有同样的问题。在我为导航控制器中的视图控制器添加了横向支持后,这个问题被修复了。
- (UIInterfaceOrientationMask)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskAll;
}
https://stackoverflow.com/questions/33328544
复制相似问题