2009-07-28 82 views
2

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

如果我正在查看第一页(最左侧)或滚动视图,则所有工作都正常。但是,如果我滚动到任何其他页面,模态视图动画(在此情况下从底部向上滑动)不会出现。相反,整个视图在与动画运行时间相同的时间内变黑,然后模态视图控制器显示为完全显示。解除模态视图控制器时会发生同样的事情。

该代码是完全标准的。在我buttonViewController我打电话:

[self presentModalViewController:detailController animated:YES]; 

相同的代码运行无论我在看哪个页面(虽然当然buttonViewController的不同实例。)

我将如何开始调试呢?

回答

2

这可能与detailController的框架有关......当您在UIScrollView中时,第一页介于0和320之间,但是当您滚动该偏移量时,所以(假设您有全屏页面)下一个视图将是320和640,下一个视图将在640和(640 + 320)等等等等。所以当你使用CGRectMake(0,0,320,460)框架设置你的detailController时,当你在第一页时,动画看起来很好,但是当你在任何其他页面时,动画将发生在(0,0)然后即时猜测视图控制器看到这不是活动屏幕,并将模式视图控制器移动到活动屏幕的位置。如果你像这个CGRectMake(320 * pageNumber,0,320,460)初始化你的框架,我想你会找到你期望的行为。让我知道这是否好奇我自己。

+0

似乎没有工作。我添加了: \t \t detailController.view.frame = CGRectMake(320 * self.page,0,320,460); \t \t ... \t \t [self presentModalViewController:detailController animated:YES]; 但它似乎没有区别。注意,我之前没有使用initWithFrame,我使用的是initWithNibName。 虽然这是一个好主意,谢谢。 – 2009-07-28 17:42:11

0

您需要在您尝试设置动画的视图下插入UIView(或任何类型的视图,例如UIScrollView),您将使动画正常工作。我想这是因为你提供了一个动画所基于的视图。