如何自动加载键盘(iOS SDK)?
很简单的问题:
我得到了一个由两个文本框组成的视图。 加载视图时,我想让键盘自动popup并聚焦第一个字段。
我怎么做? (在代码?在IB?)
非常感谢! 芥末
在你的viewDidAppear:
方法调用[yourTextField becomeFirstResponder]
。
[myTextField becomeFirstResponder]
应该做的伎俩。
还要确保你实现了可以隐藏第一个响应者的UITextFieldDelegate
方法。
那么,我知道这个问题已经被多次回答了。 在调用viewDidAppear
方法后,显示键盘需要时间。
viewDidAppear
的原因当然是消失后在视图生命周期中调用的最后一个方法。 另外,如果在内存中找不到键盘,也需要创build键盘。 所以,第一次需要更多的时间,正如我所料。 这些原因造成了一点点延误,正在扰乱我。
我总是在viewWillAppear
方法中调用becomeFirstResponder
方法来减less键盘的显示时间,但是我需要在viewDidAppear
方法之后显示键盘才不会失去平滑的animation。
所以,这个小技巧我想出了一些魅力。 我在模拟器和设备上进行了testing。 如果在你的情况下不能正常工作,你没有别的select,只能按照接受的答案解释。
那么,我正在做什么是创build一个UITextField
(你可以使用任何视图,与键盘交互),并调用成为和第一个响应方法将我的键盘放入内存,如果还没有创build。 所以,第二次,你会得到caching键盘加速键盘显示时间。 那么,我把这些代码先前的视图控制器,我要显示键盘后。
这里是代码:
- (void)viewDidAppear:(BOOL)animated { UITextField *textField = [[UITextField alloc]init]; [self.view addSubview:textField]; [textField becomeFirstResponder]; [textField resignFirstResponder]; [textField removeFromSuperview]; }
作为对MarkGranoff答案的澄清;
如果将[yourTextField becomeFirstResponder]
放在viewDidLoad
或viewWillAppear
,它将显示键盘,而不会等待一becomeFirstResponder
(如果将becomeFirstResponder
调用放在viewDidAppear方法内,就会发生这种情况)。