目标C - 从文本字段自动导航到文本字段

时间:2013-11-07 05:12:55

标签: ios objective-c uitextfield

我需要有3个文本字段,每个文本字段只能输入1个数字(文本字段的最大长度为1)。 我的问题是如何在用户输入数字后自动从textfield1,textfield2,textfield3导航?

3 个答案:

答案 0 :(得分:2)

将textfield1,textfield2,textfield3的标记分别设置为0,1和2并尝试以下代码

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    if ((textField.text.length == 0 && string.length == 1 && [[NSCharacterSet decimalDigitCharacterSet] isSupersetOfSet:[NSCharacterSet characterSetWithCharactersInString:string]]) || string.length == 0) {
       // Try to find next responder
        if (!(string.length == 0))
            [self performSelector:@selector(changeResponder:) withObject:textField afterDelay:0.2];
        return YES;
    } else {
        if (textField.text.length == 1) {
            [self performSelector:@selector(changeResponder:) withObject:textField afterDelay:0.2];
        }
        return NO;
    }
}

- (void)changeResponder:(UITextField *)textField {
    NSInteger nextTag = textField.tag + 1;
    UIResponder *nextResponder = [textField.superview viewWithTag:nextTag];
    if (nextResponder) {
        // Found next responder, so set it.
        [nextResponder becomeFirstResponder];
    } else {
        // Not found, so remove keyboard.
        [textField resignFirstResponder];
    }
}

答案 1 :(得分:1)

实施textField:shouldChangeCharactersInRange:replacementString:委托方法。根据输入文本字段的文本,您可以在下一个文本字段中调用becomeFirstResponder

请记住,您想要做的事情有很多并发症。如果用户将一堆文本粘贴到文本字段中会发生什么?如果用户返回已具有值的文本字段会发生什么?

答案 2 :(得分:0)

您可以使用以下代码:

- (BOOL) textField: (UITextField *)theTextField shouldChangeCharactersInRange: (NSRange)range replacementString: (NSString *)string {    
  if (theTextField == textField1 && YOUR_CONDITION_TO_COMPLETION_OF_EDITING){    
     [textField2 becomeFirstResponder];    
  }
}

为其他文本字段添加类似的条件