繁体   English   中英

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

[英]How to make the UIKeyboard appear as part of a view?

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

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

有解决方案吗?

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

为了它的价值,我通过在viewWillAppear: UISearchBar实例上调用becomeFirstResponder来实现我的项目。 我正在构建3.1 SDK。

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

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

当您收到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)。

最好的祝福。

Jablair的反应非常接近,甚至回到2.x SDKs - becomeFirstResponder是关键,但它应该在viewDidLoad调用。 这是关于该主题的另一个(已回答的)SU 问题

它不是Apple SDK的私有功能。 在iOS 7(或之前的任何其他版本)中,您可以在loadViewviewDidLoadviewWillAppear中做一个简单的事情

[yourTextView performSelector:@selector(becomeFirstResponder) withObject:nil afterDelay:0.0];

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM