presentModalViewController将新视图滑动太远并超出屏幕顶部

时间:2012-04-13 15:51:08

标签: objective-c uisplitviewcontroller modalviewcontroller presentmodalviewcontroller

-(void)reviewClicked:(id)sender
{
    ReviewViewController *newView = [[ReviewViewController alloc] init];
    newView.delegate = self;
    UINavigationController *navCon = [[UINavigationController alloc] initWithRootViewController:newView];
    [self presentModalViewController:navCon animated:YES];
}

我有一个splitViewController设置,这可能会导致一些问题。在详细视图控制器中,我有一个按钮,当单击时调用上面的代码。

目标是向上滑动屏幕底部的视图,以便用户查看其选择,然后单击按钮返回原始详细信息视图。此代码正常工作,您可以在模态视图和原始详细信息视图之间来回点击。

问题是,在它向上滑动屏幕后,它会继续滑过它应该停止的位置,并最终停止一个好的10-15像素太远。基本上,这个模态视图到目前为止滑动到一大块视图位于屏幕顶部之上。同时,相同数量的空间是屏幕底部的“空黑空间”,只是进一步暗示视图只是移动太远了。

使问题复杂化,它在横向模式下滑动得很好。

所以问题是,有没有人知道为什么这个错误会使模态视图滑动太远而超出屏幕顶部?

- = - = - = - = - = - = -

编辑: 对不起,我打算在那个地方输入navCon。我把它固定在上面。

- = - = - = - = - = - = -

解决方案:

-(void)reviewClicked:(id)sender
{
    ReviewViewController *newView = [[ReviewViewController alloc] init];
    newView.delegate = self;
    UINavigationController *navCon = [[UINavigationController alloc] initWithRootViewController:newView];
    navCon.view.frame = CGRectMake(0, 0, 768, 1080);
    [self presentModalViewController:navCon animated:YES];
}

经过一些试验和错误,我意识到我从未真正设置视图的框架!一个简单的解决方案...我一直在运行包含.xib文件的示例,并且由于这些文件自动创建了框架,我完全忽略了它!

请记住将来看这个的人。此框架仅适用于纵向模式。如果您想要横向模式,只需相应地修改框架:

navCon.view.frame = CGRectMake(0, 0, 1080, 768);

1 个答案:

答案 0 :(得分:0)

虽然我已经找到问题所述的问题的快速解决方案。事实是,仍然存在许多问题。经过进一步检查,我呼吁appDelegate调用这些方法:

[self.splitViewController presentModalViewController:navCon animated:YES];
[self.splitViewController dismissModalViewControllerAnimated:YES];

基本上,我有根视图类调用模态视图,它解决了我的所有问题。显然,在splitview的详细视图中调用模态视图与从根视图调用模态视图(恰好是splitViewController)不同。我希望这对未来的任何人都有帮助。欢呼声。

- = - = - = - = - = - = - = -

如需更多参考,请参阅我发现的这篇文章:

UISplitViewController - Pushing Modal View