两个UITextFields - 第一个键盘输出,下一个输入

时间:2010-07-18 13:14:45

标签: iphone objective-c keyboard uitextfield

所以在我的viewdidload中我得到了像

这样的东西
[nameTextField becomeFirstResponder]

现在按下一个按钮后,我想滑出这个文本字段的键盘,然后滑动另一个文本字段的另一个键盘。

我想到了

[nameTextField resignFirstResponder];
[dateTextField becomeFirstResponder];

但另一个键盘立即出现。

评论[dateTextField becomeFirstResponder];,我的nameTextField键盘滑出我想要的效果。

任何想法如何做到这一点?

谢谢!

3 个答案:

答案 0 :(得分:2)

你有没有理由这样做?这显然会增加用户输入信息所需的时间,我知道这会让我感到烦恼。

但如果你确实想要这种效果,那么我会看一下这样的事情:

[dateTextField performSelector:@selector(becomeFirstResponder) withObject:nil afterDelay:timeDelay];

其中timeDelay是解雇第一个键盘所需的时间。

答案 1 :(得分:2)

您可以注册观看以下通知:UIKeyboardWillShowNotificationUIKeyboardWillHideNotification。这将让你跟踪发生的事情,但它很容易变得非常复杂,因此Tom Irving的建议可能更容易使用。

答案 2 :(得分:1)

要获得有关键盘隐藏和显示的通知,请查看

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidHide:)
    name:UIKeyboardDidHideNotification object:[self view].window];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidShow:) 
    name:UIKeyboardDidShowNotification object:[self view].window];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) 
    name:UIKeyboardWillHideNotification object:[self view].window];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) 
    name:UIKeyboardWillShowNotification object:[self view].window];

并添加适当的方法,例如

-(void)keyboardWillShow:(NSNotification*)notif
-(void)keyboardWillHide:(NSNotification*)notif
-(void)keyboardDidShow:(NSNotification*)notif
-(void)keyboardDidHide:(NSNotification*)notif

然后您可以按照自己喜欢的方式连接动画。

确保所有这些都是NSLog(),当你期望它们时,它们并不总是被调用(臭名昭着的就是当你从一个领域转到另一个领域,并且你收到了意愿并将立即显示)