0

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

4

3 回答 3

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];
    }
}
于 2013-11-07T05:41:05.603 回答
1

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

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

于 2013-11-07T05:16:48.513 回答
0

您可以使用以下代码:

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

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

于 2013-11-07T05:21:32.443 回答