在多个uitextfields之间切换

时间:2014-05-21 05:11:21

标签: ios uitextfield uitextfielddelegate

我已经实现了多个UITextField's,并且想要在达到最大限制时切换到下一个文本字段。我已经实现了以下委托方法但由于某种原因它崩溃并且在达到限制时没有切换到下一个文本字段...

非常感谢任何帮助......

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {

    NSLog(@"%s", __FUNCTION__);

    NSString *totalText = [textField.text stringByAppendingString:string];
    NSLog(@"Length : %d", [totalText length]);

    switch (textField.tag) {
        case FirstTextFieldTag: {

            if ([totalText length] > MaxLentgthTextField1) {
                [self.textField1 resignFirstResponder];
                [self.textField2 becomeFirstResponder];
            }

            break;
        }

        case SecondTextFieldTag: {

            if ([totalText length] > MaxLentgthTextField2) {
                [self.textField2 resignFirstResponder];
                [self.textField3 becomeFirstResponder];
            }

            break;
        }

        case ThirdTextFieldTag: {

            if ([totalText length] > MaxLentgthTextField3) {
                [self.textField3 resignFirstResponder];
                [self.textField4 becomeFirstResponder];
            }

            break;
        }

        case FourthTextFieldTag: {

            if ([totalText length] > MaxLentgthTextField4) {
                [self.textField4 resignFirstResponder];
                [self.textField5 becomeFirstResponder];
            }

            break;
        }

        case FifthTextFieldTag: {

            if ([totalText length] > MaxLentgthTextField5) {
                [self.textField5 resignFirstResponder];
                return NO;
            }

            break;
        }

        default:
            break;
    }

    return YES;
}

2 个答案:

答案 0 :(得分:1)

没有看到你的崩溃日志。这部分肯定是错误的

NSString *totalText = [textField.text stringByAppendingString:string];

文本字段的新文本不是通过附加更改的字符而是通过更改给定范围内的字符来计算的

请尝试这个,然后告诉我们结果

NSString * totalText = [textField.text stringByReplacingCharactersInRange:range withString:string];

答案 1 :(得分:0)

你找到字符串长度的方式似乎不合适。

NSString *totalText = [textField.text stringByAppendingString:string];
NSLog(@"Length : %d", [totalText length]);

相反,使用它来查找字符串的长度

NSUInteger newLength = [textField.text length] + [string length] - range.length;