Storyboard segue 有时会将我的视图控制器部分放在屏幕之外

Posted

技术标签:

【中文标题】Storyboard segue 有时会将我的视图控制器部分放在屏幕之外【英文标题】:Storyboard segue sometimes places my viewcontroller partially off the screen 【发布时间】:2013-03-06 01:12:00 【问题描述】:

在我的 iPad 应用程序中,十分之二的测试人员报告了我无法在 ios 6.1.2(iPad 和模拟器)上复制的问题。我的测试人员都在 6.0.1 上。这个问题只发生在大约 10% 的时间里,而且似乎在应用刚从后台返回时发生得更多。

问题在于,当某个视图控制器以模态方式呈现时,使用情节提要 segues,有时,它不会在屏幕上居中。在那些时候,它似乎总是以 (0,0) 为中心:

现在,我实际上没有任何定位视图控制器的代码。我依靠 StoryBoard Segue 来定位和显示它。该segue的属性是:

风格:模态 演示文稿:表单 过渡:交叉溶解 动画:是的

(这些是在 IB 中设置的,而不是在代码中)。

调用此视图控制器的代码部分是:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

    UISplitViewController *split =  ((CVAppDelegate *)[[UIApplication sharedApplication] delegate]).splitViewController;
    UINavigationController *navController = split.viewControllers[1];
    NSInteger row = [self.tableView indexPathForSelectedRow].row;
    if (row < [((CVAppDelegate *)[[UIApplication sharedApplication] delegate]).products count])
        [navController.viewControllers[0] performSegueWithIdentifier:@"ShowPicker" sender:@(row)];
    [_popover dismissPopoverAnimated:YES];


最后一点可能有帮助的数据是,这个 viewcontroller 是从一个 tableviewcontroller 调用的,它本身就是一个弹出框,并且在显示这个新的 viewcontroller 时被关闭。

关于为什么我从未见过这个问题,我已经没有想法了,但其他几个人每天都会看到一次左右(我离他们很远,所以我无法亲自调试)。我在想它可能是 iOS 版本号,或者他们有 iPad 的纵向方向,并且由于我的应用程序仅针对横向方向编写,因此 iPad 在调用之前具有或具有什么方向会有所不同此视图或将应用程序从后台带入...

任何想法都将不胜感激。

【问题讨论】:

【参考方案1】:

知道了。如果在屏幕上有键盘时触发 segue,则会发生这种情况。键盘附加到左侧视图控制器上的可编辑项目。因此,当 segue 触发时,新的视图控制器被定位在左视图控制器上,并向上推以考虑键盘 - 由于活动文本项不再活动,键盘已经被解除。

【讨论】:

以上是关于Storyboard segue 有时会将我的视图控制器部分放在屏幕之外的主要内容,如果未能解决你的问题,请参考以下文章

使用 Storyboard 推动 segue

每次重新启动计算机时 Main.storyboard 都会更改视图

执行 segue 时视图出现两次

不使用 Storyboard segues 的自定义视图转换 (Swift)

IOS / Objective-C / Storyboard:从左到右的自定义Segue在视图控制器之间创建黑条

在 iOS 5 上使用 Segues/Storyboard 弹出当前视图