如何使UIKeyboard作为视图的一部分出现?

时间:2009-12-16 14:54:08

标签: iphone objective-c uikeyboard

Apple,应用程序和短信等Apple应用程序使UIKeyboard成为视图的一部分。 UIKeyboard与视图一起滑入,而不是作为单独的动画显示。我尝试重新创建在[myTextField becomeFirstResponder]viewWillAppear:animatedviewDidLoadloadView等不同位置调用navigationController:willShowViewController:animated:的相同行为,但没有任何作用。

我在一篇文章中读到(现在找不到帖子),当你想让UIKeyboard出现在UITableView上时,这似乎是不可能的。但是,这个结论似乎与Apple应用程序不一致。有人可以证实吗?

有解决方案吗?

5 个答案:

答案 0 :(得分:2)

您要为哪种SDK构建?我可能错了,但我认为Apple说了一些关于改善屏幕上推视控制器的行为以及其他动画的行为。

对于它的价值,我通过在becomeFirstResponder中的UISearchBar实例上调用viewWillAppear:来完成我的项目。我正在构建3.1 SDK。

答案 1 :(得分:1)

iPhone Devs可能使用的键盘出现在自己的UIWindow中,因此无论您在应用中使用哪种视觉杂技,它都会从底部向上滑动。

Apple Apps显然可以访问我们可能尚未使用的键盘功能。

答案 2 :(得分:1)

当您收到UIKeyboardWillShowNotification通知时,可以通过调整动画块中的视图框来模仿此功能。假设您的视图底部有一个文本字段视图,就像SMS应用程序首次显示SMS对话时一样。当你的文本字段被点击时,会触发UIKeyboardWillShowNotification,此时你可以像这样为该视图设置动画:

[UIView beginAnimations:nil context:NULL];
[textFieldView setFrame:CGRectMake(0.0f, 416.0f, 320.0f, 216.0f)];
// Also resize your table view
[tableView setFrame:CGRectMake(0.0f, 0.0f, 320.0f, 372.0f)];
[UIView commitAnimations];

如果您收到UIKeyboardWillHideNotification通知,则可以重置视图框。

我没有弄清楚这里帧的确切位置,所以你必须自己计算,但这应该给你基本的想法。只需考虑您希望视图帧在动画之后的位置,并将帧设置在动画块内(即-beginAnimations,-commitAnimations)。

最好的问候。

答案 3 :(得分:0)

Jablair的回复很接近,甚至回到2.x SDK - becomeFirstResponder是关键,但应该在viewDidLoad中调用。这是另一个(已回答)SU question on the topic

答案 4 :(得分:0)

这不是Apple SDK的私有功能。 在iOS 7(或之前的任何其他版本)中,您可以在 loadView viewDidLoad viewWillAppear

中做一件简单的事情。
[yourTextView performSelector:@selector(becomeFirstResponder) withObject:nil afterDelay:0.0];

在这种情况下,您将获得与推动视图控制器的运动对齐的键盘从左到右的外观。请注意,任何直接调用 becomeFirstResponder 都会至少在iOS 7中从底部提供标准动画。