[英]How to make the UIKeyboard appear as part of a view?
Apple,应用程序和短信等Apple应用程序使UIKeyboard成为视图的一部分。 UIKeyboard与视图一起滑入,而不是作为单独的动画显示。 我试图在不同的地方重新调用[myTextField becomeFirstResponder]
的相同行为,如viewWillAppear:animated
, viewDidLoad
, loadView
, navigationController: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)。
最好的祝福。
它不是Apple SDK的私有功能。 在iOS 7(或之前的任何其他版本)中,您可以在loadView , viewDidLoad或viewWillAppear中做一个简单的事情
[yourTextView performSelector:@selector(becomeFirstResponder) withObject:nil afterDelay:0.0];
在这种情况下,您将获得键盘的从左到右的外观与推动视图控制器的运动对齐。 请注意,任何直接调用becomeFirstResponder都至少在iOS 7中从底部提供标准动画。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.