0

我有两个 UITextfields 如下,

在此处输入图像描述

如果用户在第一个文本字段中输入 4 位数字,则第二个文本字段应成为第一响应者。我试过下面的代码,

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
  int num = [textField.text length] - range.length;
  if(textField==pin && num ==4)
  {
    [cpin becomeFirstResponder];
  }
}

这就像,用户必须输入第五位数字。在第一个 UITextfield 中输入四位数字后,我希望第二个文本字段成为响应者。怎么做?

4

4 回答 4

4

您需要省略 RANGE 参数。

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
  if([textField.text length] == 3 && ![string isEqualToString:@""]) // Verify that replacementString is a digit and not a backspace
  {
    textField.text = [textField.text stringByAppendingString:string];
    [cpin becomeFirstResponder];
    return NO;
  }

  return YES;
} 
于 2014-06-17T10:15:22.937 回答
1

未经测试,因为我无权访问 IDE atm

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    int num = [textField.text length] + range.length;
    if(textField==pin && num ==4)
    {
        [cpin becomeFirstResponder];
    }
}

或者我确定您可以int num = string.length一起使用或摆脱 int num 并使用:if (textField == pin && string.length == 4)

于 2014-06-17T10:32:23.107 回答
0

试试这个:

    - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
          int num = [textField.text length];
          if(textField==pin && num ==4) {
            [cpin becomeFirstResponder];
          }
         return YES;
    }
于 2014-06-17T10:17:42.250 回答
0

请试试这个。这应该工作

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)strin
{
    int num = [textField.text length] - range.length;
    if(textField== pin && num ==4)
    {
        [cpin becomeFirstResponder];
        return NO;
    }
    return YES;
}

希望这可以帮助。

于 2014-06-17T10:32:16.943 回答