我有一个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中。屏幕变黑,键盘向上动画,然后查看显示。任何想法为什么会发生这种情况???
答案 0 :(得分:2)
有一天要想出来......希望有人能从我的痛苦中受益!
以下是发生的事情:
调用presentModalViewController的UIViewController本身嵌套在一个包含在另一个 UIViewController中的UIScrollView中。显然,可可触摸不太像这样。无论如何,为了纠正这个问题,我做了以下几点:
将UIViewController类型的属性添加到将呈现模态视图控制器的UIViewController(例如@property (nonatomic, retain) UIViewController *owningController;
)
将该属性设置为最顶层的UIViewController(在这种情况下包含UIScrollView的那个)
在显示模态视图的UIViewController中...更改此
[ 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