我被难住了 :-\
我有一个遗留的应用程序在商店里,我正在为iOS 8/9更新它。它是多年前(ARC之前)编写的,是iPhone和iPad的通用应用程序。现在除了这个问题,一切都正常...
在iPad上,屏幕顶部有一个工具栏,其中我呈现UIPopoverControllers,其中包含一些标准的UITableViewController类型屏幕,您可以深入了解。
在纵向模式(和倒置纵向模式)下,一切都按预期工作。
但是,在横向模式下,按下“返回”(标准返回而不是自定义返回)会导致奇怪的动画-离开的控制器跳出弹出窗口并快速滑出屏幕(方向由设备的方向决定),而进入的控制器则只是在离开的控制器跳出弹出窗口后立即出现。我必须使用缓慢的动画来确定这一点,因为以全速运行它看起来就像一个巨大的故障。
这里有一个短片20 second movie showing the defect here; 注意在14秒时点击“位置”时发生的情况。
如果我将VC堆栈作为表单表格呈现,而不是UIPopover,则无论方向如何,一切都按预期工作。我还尝试了较新的UIPopoverPresentationController,并遇到了相同的问题,这让我有点惊讶。
这在我呈现的两个弹出窗口(一个从工具栏左侧,一个从工具栏右侧)上发生,它们的内部非常不同。唯一的共同因素是它们都有一个UINavigationController在UIPopover中。
我使用视图调试器检查了视图层次结构,但没有发现异常,无论我以多慢的速度运行模拟器,都无法在故障期间捕获视图,因此我怀疑我看到了popover或navigation controller的内部问题。
有人见过类似的情况吗?我在iOS 8.4的设备和iOS 8和9的模拟器上都看到了这个问题。
为了背景,该项目没有storyboards,很少使用xibs,并且通常在loadView中使用代码构建UI-它确实是一个旧应用程序...
感谢任何指针。不确定任何代码会有多大帮助,但这里是相关弹出窗口的演示;
我使用以下新的代码时遇到了同样的缺陷;
我有一个遗留的应用程序在商店里,我正在为iOS 8/9更新它。它是多年前(ARC之前)编写的,是iPhone和iPad的通用应用程序。现在除了这个问题,一切都正常...
在iPad上,屏幕顶部有一个工具栏,其中我呈现UIPopoverControllers,其中包含一些标准的UITableViewController类型屏幕,您可以深入了解。
在纵向模式(和倒置纵向模式)下,一切都按预期工作。
但是,在横向模式下,按下“返回”(标准返回而不是自定义返回)会导致奇怪的动画-离开的控制器跳出弹出窗口并快速滑出屏幕(方向由设备的方向决定),而进入的控制器则只是在离开的控制器跳出弹出窗口后立即出现。我必须使用缓慢的动画来确定这一点,因为以全速运行它看起来就像一个巨大的故障。
这里有一个短片20 second movie showing the defect here; 注意在14秒时点击“位置”时发生的情况。
如果我将VC堆栈作为表单表格呈现,而不是UIPopover,则无论方向如何,一切都按预期工作。我还尝试了较新的UIPopoverPresentationController,并遇到了相同的问题,这让我有点惊讶。
这在我呈现的两个弹出窗口(一个从工具栏左侧,一个从工具栏右侧)上发生,它们的内部非常不同。唯一的共同因素是它们都有一个UINavigationController在UIPopover中。
我使用视图调试器检查了视图层次结构,但没有发现异常,无论我以多慢的速度运行模拟器,都无法在故障期间捕获视图,因此我怀疑我看到了popover或navigation controller的内部问题。
有人见过类似的情况吗?我在iOS 8.4的设备和iOS 8和9的模拟器上都看到了这个问题。
为了背景,该项目没有storyboards,很少使用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 时没有这个问题。