使用UINavigationController的CATransition:键盘消失

时间:2013-06-20 18:30:14

标签: ios uinavigationcontroller keyboard catransition

我正在UINavigationController中进行自定义动画,允许在第一个视图中隐藏标签栏。

它从一种带有虚拟键盘的文本视图开始,并显示一个UITableViewController:

CATransition* transition = [CATransition animation];
transition.duration = 0.25f;
transition.type =  kCATransitionPush;
transition.subtype = kCATransitionFromRight;
[window.layer addAnimation:transition forKey:kCATransition];

[navigationController setNavigationBarHidden:NO];
[navigationController pushViewController:preferencesViewController animated:NO];

但我的问题是键盘在开始转换之前就会立即消失。

我想进行推送转换,将键盘与第一个视图一起移动。

这是否可以在不必对第一个视图进行屏幕截图的情况下进行?

感谢您的帮助:)

1 个答案:

答案 0 :(得分:0)

好的,我找到了怎么做,我有这个而不是[window.layer addAnimation:transition forKey:kCATransition];

for (UIWindow *someWindow in [[UIApplication sharedApplication] windows])
    if (![someWindow respondsToSelector:@selector(screen)] || [someWindow screen] == [UIScreen mainScreen])
        [someWindow.layer addAnimation:transition forKey:kCATransition];

现在我正在尝试相反的工作(返回第一个视图)。我想让键盘与第一个视图一起翻译。但它只会在视图完成翻译之后出现。

也许在应用动画之前我必须获取键盘的视图?

编辑:我搞定了,我改变了我的策略: 我在rootviewcontroller和navigationcontroller之间进行转换。 我禁止文本字段辞职,并在转换过程中隐藏键盘视图。