4

我有一个分页滚动视图。每个页面都有一个管理按钮网格的视图控制器(buttonViewController)。如果按下其中一个按钮,buttonViewController 会模态地弹出另一个视图控制器(detailViewController)。

问题是,当我关闭模态视图控制器时,可见的 buttonViewController 向下移动了大约 20 个像素。奇怪的是只有可见页面被移动。如果我滚动到另一个已经加载的页面,它仍然在正确的位置。

我的问题与关闭 modalViewController 在 iphone 周围移动主视图按钮基本相同

但是,该问题的公认答案假定状态栏是隐藏的。我没有在我的应用程序中隐藏状态栏。

还有其他想法吗?

还有一点需要注意:这种转变只发生在我第一次启动模态视图控制器时。如果我继续打开和关闭模态视图控制器,一切都保持不变。

进一步说明:如果我添加以下代码:

    CGRect frame = self.view.frame;
frame.origin.y=0;
self.view.frame = frame;

在我关闭模态视图控制器后,我可以解决这个问题。框架似乎在 y 方向移动了 20 像素。我仍然不知道是什么导致了这一举动。

4

2 回答 2

1

好吧,我遇到了这个问题,这是由于我的第一个 viewController 的设置方式(在 UIWindow 上),这很奇怪,因为这在我之前从未发生过,我观察到的行为是,当您在点 (0,0) 它将与状态栏重叠,这不常见,通常视图知道状态栏并且它们的行为适当。作为副作用,当一个模式视图取消状态栏时,在将其关闭后,我看到了与您看到的相同的问题。我所做的修复是将 UIWindows 视图设置为笔尖中的控制器视图,这似乎解决了所有问题。再一次,我不知道为什么简单地使用 CGRectMake(0,0,320,460) 以编程方式添加到窗口会出现这种奇怪的行为,因为我一直在为我以前的所有项目这样做并且看到了正确的行为。但是当我在笔尖中设置它时,它按预期工作。也许这也是你的问题。

于 2009-07-28T18:20:06.243 回答
0

原来这与: ModalViewController doesn't display during animation when paged scrollView is scrolled

我的一些视图控制器的高度与我的一些视图控制器的高度不匹配,这让所有东西都丢掉了。

有些视图的高度为 460 像素,有些视图的高度为 480 像素。出于某种原因,每当模态视图控制器消失时,它就会移动 20 像素。一旦我把所有的东西都做成了 460 像素,一切都很好。

于 2009-07-28T20:55:23.543 回答