presentModalViewController在显示TTMessageController时不动画

时间:2010-05-11 17:54:59

标签: iphone objective-c xcode three20 presentmodalviewcontroller

我有一个TTMessageController的子类,它显示了...但即使它应该是动画也没有动画。显示模态视图的代码如下所示(其中PostToWebMessageController是TTMessageController的子类:

if (self.toWebMsgController == nil) {
    self.toWebMsgController = [[PostToWebMessageController alloc] init];
}

UINavigationController *navController = [[UINavigationController alloc] init];
[navController pushViewController:self.toWebMsgController animated:NO];

[self presentModalViewController:navController animated:YES];

虽然如此:屏幕变黑......键盘向上滚动到视图中......然后TTMessageController视图显示(不是动画)。当我通过取消按钮关闭视图时,屏幕变黑,然后消失(再没有动画)。

为什么会发生这种情况?我和其他一些TT *控制器一样,我无法通过模态显示来制作动画。

谢谢

更新:

这种情况发生在我试图以模态方式呈现的每个UIViewController中。屏幕变黑,键盘向上动画,然后查看显示。任何想法为什么会发生这种情况???

3 个答案:

答案 0 :(得分:2)

有一天要想出来......希望有人能从我的痛苦中受益!

以下是发生的事情:

调用presentModalViewController的UIViewController本身嵌套在一个包含在另一个 UIViewController中的UIScrollView中。显然,可可触摸不太像这样。无论如何,为了纠正这个问题,我做了以下几点:

  1. 将UIViewController类型的属性添加到将呈现模态视图控制器的UIViewController(例如@property (nonatomic, retain) UIViewController *owningController;

  2. 将该属性设置为最顶层的UIViewController(在这种情况下包含UIScrollView的那个)

  3. 在显示模态视图的UIViewController中...更改此

  4. [ self presentModalViewController:controller animated:YES];

    到此......

    [owningController presentModalViewController:controller animated:YES];
    

答案 1 :(得分:0)

我不确定你为什么要使用UINavigationController。如果是因为你希望你的toWebMsgController控制器在模态视图中加载时有一个导航栏,请尝试对你的代码进行以下更改:

if (self.toWebMsgController == nil) {
    self.toWebMsgController = [[PostToWebMessageController alloc] init];
}

UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:toWebMsgController];

//[navController pushViewController:self.toWebMsgController animated:NO];

[self presentModalViewController:navController animated:YES];

如果在模态视图中不需要导航栏,则可能根本不需要UINavigationController。

答案 2 :(得分:0)

我有同样的问题。

检查您是否为根控制器(如果您在控制器上方显示控制器),以便presentationStyle不设置为UIModalPresentationCurrentContext