滚动页面滚动视图时,动画期间不显示ModalViewController

时间:2009-07-28 17:27:24

标签: iphone uiscrollview modal-dialog

我的应用程序有分页滚动视图。 scrollview的每个页面都有一个视图控制器实例(buttonViewController),它显示了一个按钮网格。如果用户单击其中一个按钮,buttonViewController将以模态方式启动detailViewController,并将动画设置为YES。

如果我正在查看第一页(最左边)或滚动视图,那么一切正常。但是,如果我滚动到任何其他页面,则不会出现模态视图动画(在这种情况下从底部向上滑动)。相反,整个视图在动画运行的时间长度内变黑,然后模态视图控制器显示完全显示。解雇模态视图控制器时会发生同样的事情。

代码完全是标准的。在我的buttonViewController中,我调用:

[self presentModalViewController:detailController animated:YES];

无论我正在查看哪个页面,都会运行相同的代码(当然,在buttonViewController的不同实例上)。

我将如何开始调试?

2 个答案:

答案 0 :(得分:2)

这可能与detailController的框架有关...当你在UIScrollView中时,第一页在0到320之间,但是当你滚动那个偏移增量时,所以(假设你有全屏页面)下一个视图将是320和640,下一个视图将是640和(640 + 320),依此类推。因此,当您使用框架CGRectMake(0,0,320,460)设置detailController时,当您在第一页时,动画看起来很好,但是当您在任何其他页面时,动画将在(0,0)处进行然后我猜测视图控制器看到这不是活动屏幕,并将模态视图控制器移动到活动屏幕所在的位置。如果你像这个CGRectMake初始化你的框架(320 * pageNumber,0,320,460)我认为你将有你想要的行为。让我知道这是否真的很好奇我自己。

答案 1 :(得分:0)

您需要在要设置动画的视图下插入UIView(或任何类型的视图,例如UIScrollView),您将获得正确的动画效果。我想这是因为你提供了一个动画基于的视图。