1

我有一个 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 中。屏幕变黑,键盘向上动画,然后查看显示。任何想法为什么会发生这种情况???

4

3 回答 3

2

一天来解决这个问题......希望有人会从我的痛苦中受益!

这是正在发生的事情:

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

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

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

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

[自我presentModalViewController:控制器动画:是];

对此...

[owningController presentModalViewController:controller animated:YES];
于 2010-05-11T23:07:51.957 回答
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。

于 2010-05-11T18:10:03.323 回答
0

我有同样的问题。

检查您的根控制器(如果您在其上显示控制器)的presentationStyle 未设置为 UIModalPresentationCurrentContext

于 2013-09-03T09:29:47.300 回答