如何自动加载键盘(iOS SDK)?

时间:2011-04-22 19:54:25

标签: ios sdk view keyboard uitextfield

非常简单的问题:

我有一个包含两个文本字段的视图。当视图加载时,我希望键盘自动弹出并聚焦第一个字段。

我该怎么做? (在代码中?在IB中?)

非常感谢! 芥末

4 个答案:

答案 0 :(得分:62)

viewDidAppear:方法调用中[yourTextField becomeFirstResponder]

答案 1 :(得分:7)

[myTextField becomeFirstResponder]应该可以解决问题。

还要确保实施UITextFieldDelegate方法,以便隐藏第一响应者。

答案 2 :(得分:2)

作为对MarkGranoff答案的澄清;

如果您将[yourTextField becomeFirstResponder]放在viewDidLoadviewWillAppear内 - 它会显示键盘而不会等待一两秒钟(如果您拨打becomeFirstResponder电话会出现这种情况在viewDidAppear方法内部。)

答案 3 :(得分:2)

嗯,我知道这个问题已经多次回答了。调用viewDidAppear方法后显示键盘需要一些时间。

viewDidAppear是在视图生命周期中被调用的最后一个方法当然消失的原因。此外,如果在内存中找不到键盘,也需要创建键盘。所以,第一次像我预期的那样需要更多的时间。这些原因引起了一些麻烦,这让我烦恼。

我总是在becomeFirstResponder方法中调用viewWillAppear方法来减少键盘的显示时间,但我需要在viewDidAppear方法之后显示键盘,以免失去平滑的动画。

所以,我想出的这个小技巧就像魅力一样。我在模拟器和设备上测试了它。如果它在您的情况下无法正常工作,则您没有其他选择,但可以按照已接受的答案中的说明进行操作。

嗯,我正在做的是创建一个UITextField(你可以使用任何与键盘交互的视图)并调用并转发第一个响应者方法将我的键盘放入内存中,如果不是创造了。所以,第二次,你将获得缓存键盘,加快键盘显示时间。好吧,我把这些代码放在我之前要显示键盘的前一个视图控制器上。

以下是代码:

- (void)viewDidAppear:(BOOL)animated
{
    UITextField *textField = [[UITextField alloc]init];
    [self.view addSubview:textField];
    [textField becomeFirstResponder];
    [textField resignFirstResponder];
    [textField removeFromSuperview];
}