自定义键盘的"下一步"和"完成"返回按钮

use*_*977 1 objective-c uitextfield uikeyboard ibaction ios

现在我有一个简单的登录视图控制器.它有2个文本字段,一个用于用户名,另一个用于密码.我想为这两个文本字段的键盘添加以下功能:

  1. 当用户在用户名文本字段中输入用户名时,他们应该能够按下"下一步"返回键,该键应将其带到第二个文本字段以获取密码.

  2. 当用户输入密码并按下键盘的"完成"返回键时,我想执行我已设置的IBAction.

这是我想在用户按下密码文本字段中的"完成"返回键时执行的IBAction代码:

-(IBAction)didTapLoginButton:(id)sender {

    [self textFieldShouldReturn:_usernameEntry];

    NSString *user = [_usernameEntry text];
    NSString *pass = [_passwordEntry text];

    if ([user length] < 4 || [pass length] < 4) {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Invalid Entry" message:@"Username and Password must both be at least 4 characters long." delegate:self cancelButtonTitle:@"Okay" otherButtonTitles:nil];
        [alert show];
    } else {
        [_activityIndicator startAnimating];
        [PFUser logInWithUsernameInBackground:user password:pass block:^(PFUser *user, NSError *error) {
            [_activityIndicator stopAnimating];
            if (user) {
                NSLog(@"Successful login");

                //[self performSegueWithIdentifier:@"loginToMainAppSegue" sender:self];
                [self performSegueWithIdentifier:@"loginToMediaCaptureVC" sender:self];


            } else {
                NSLog(@"%@",error);
                UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Login Failed." message:@"Invalid Username and/or Password." delegate:self cancelButtonTitle:@"Okay" otherButtonTitles:nil];
                [alert show];
            }
        }];
    }

}
Run Code Online (Sandbox Code Playgroud)

我已经将视图控制器设置为委托,并且两个文本字段都可以正常工作,但我想添加上面列出的额外功能.

如果它有所不同,则不会以编程方式创建文本字段和键盘.它们是在故事板上创建的.

谢谢您的帮助.

Paw*_*Rai 5

step1 - 为您的文本字段添加标记

step2 - 检查标签 - (BOOL)textFieldShouldReturn:(UITextField *)textField;

如果第一个用户名处于活动状态,becomes first responder.则在密码字段处于活动状resign first responder

-(BOOL)textFieldShouldReturn:(UITextField*)textField;
{
  if([_txtFieldUserName isFirstResponder]){

    [_txtFieldPassword becomeFirstResponder];
  }
  else if ([_txtFieldPassword isFirstResponder]){

    [_txtFieldPassword resignFirstResponder];
  }
}
Run Code Online (Sandbox Code Playgroud)