故事板segue有时会将我的viewcontroller部分地放在屏幕上

时间:2013-03-06 01:12:01

标签: ios uiviewcontroller uistoryboard uistoryboardsegue

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

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

This is what it looks like.

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

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

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

调用此viewcontroller的代码部分是:

- (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调用的,tableviewcontroller本身就是一个popover,并且在显示这个新的viewcontroller时被解雇。

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

任何想法都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

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