为UITextField的键盘添加完成功能

时间:2011-11-23 01:02:44

标签: iphone objective-c cocoa-touch uitextfield

我有两个UITextField的视图,一个用于用户名,一个用于密码。

我添加了功能,因此usernameTF返回按钮会跳转到passwordTF。我还在passwordTF“Go”上做了一个返回按钮,我想连接到一个IBAction我将包含实际的登录逻辑。

我尝试将IBAction连接到passwordTF的Did End On Exit方法,但当usernameTF使passwordTF成为第一个响应者时,似乎正在调用。< / p>

我正在使用此代码从usernameTF跳转到passwordTF

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    if (textField == self.usernameTextField) {
        [self.passwordTextField becomeFirstResponder];
    }
    [textField resignFirstResponder];
    return YES;
}

我尝试了这个但是当我按下Go / Return时它不会调用该方法:

[self.passwordTextField addTarget:self
                               action:@selector(loginButtonPressed:)
                     forControlEvents:UIControlEventEditingDidEndOnExit];

我还尝试将IBAction连接到UITextField的{​​{1}}方法,该方法在按下返回按钮时调用该方法,但是当我点击任何按钮时它也会调用该方法Editing Did End,而不是我与该方法相关的那个。任何修复?

2 个答案:

答案 0 :(得分:1)

您可以尝试使用此

-(BOOL)textFieldShouldReturn:(UITextField *)textField{
    [textField resignFirstResponder];
    if (textField == txtfEmail)
        [txtfPassword becomeFirstResponder];
    else {
        [self login];
    }
    return YES;
}

[self login]实际上是被调用的登录方法。从服务器或数据库验证登录凭据。 txtfEmail是登录名,txtfPassword是密码字段。希望它有所帮助

答案 1 :(得分:0)

@RahulSharma几乎就在那里,但并不完全。 它通过以下方法解决了 2个问题

-(BOOL)textFieldShouldReturn:(UITextField *)textField{
    // [textField resignFirstResponder];
    if (textField == txtfEmail) {
        [txtfPassword becomeFirstResponder];
        return NO; // Otherwise the "Return" char is posted onto next view
    } else {
        [self login];
    }
    return YES;
}
  1. 无需调用resignFirstResponder
  2. 返回NO将确保CR不会被发送到下一个控件