1

邮件、联系人和 SMS 等 Apple 应用程序使 UIKeyboard 显示为视图的一部分。UIKeyboard 与视图一起滑入,而不是作为单独的动画出现。我试图[myTextField becomeFirstResponder]在不同的地方重新创建相同的行为,如viewWillAppear:animated, viewDidLoad, loadViewnavigationController:willShowViewController:animated:但没有任何效果。

我在一篇文章(现在找不到该文章)中读到,当您希望 UIKeyboard 与 UITableView 一起出现时,这似乎是不可能的。然而,这个结论似乎与苹果应用程序不一致。有人可以确认吗?

有解决办法吗?

4

4 回答 4

2

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

对于它的价值,我通过becomeFirstResponderviewWillAppear:. 我正在针对 3.1 SDK 构建。

于 2009-12-16T17:15:54.500 回答
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)。

此致。

于 2009-12-16T15:46:44.800 回答
1

我们 iPhone 开发者使用的键盘可能会以自己的形式出现UIWindow,因此无论您在应用程序中制作哪种视图杂技,它都会始终从底部向上滑动。

Apple 应用程序显然可以访问我们可能(尚未)使用的键盘的增强功能。

于 2009-12-16T15:03:20.800 回答
0

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

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

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

于 2013-12-17T16:30:54.700 回答