0

2 つのオブジェクトを使用して、Zip Code フィールドを持つアプリを作成していtextFieldます。このような、

ここに画像の説明を入力

ここでtextField、コントロールが second に移動した後、最初に 5 文字を入力できるようにしますtextField。2 番目のテキスト フィールドには 4 文字しか入力できず、それ以降は文字を受け付けません。

私はこのコードを試しました

-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
if (textField == zipCode1TV) {
        txtFieldSelected = @"zipCode1TV";
    } else if(textField == zipCode2TV){
        txtFieldSelected = @"zipCode2TV";
    }
    return YES;
}

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

    if ([txtFieldSelected isEqual: @"zipCode1TV"]) {
        if (zipCode1TV.text.length>4) {
            [zipCode2TV becomeFirstResponder];
        }
    }
    if ([txtFieldSelected isEqual: @"zipCode2TV"]) {
        int maxChar = 4;
        NSUInteger newLength = [textField.text length] + [string length] - range.length;
        return (newLength <= maxChar);
    }
    return YES;
}

-(void)textFieldDidEndEditing:(UITextField *)textField
{

    if ([txtFieldSelected isEqual: @"zipCode2TV"] ||[txtFieldSelected isEqual: @"zipCode2TV"]) {
        zipCode =[NSString stringWithFormat:@"%@%@",zipCode1TV.text,zipCode2TV.text];
        NSLog(@"%@",zipCode);
    }
} 

このコードを使用していくつかの問題を解決しましたが、最初に再入力できずtextField、文字列zipCodeが実際の値を返しません。textFieldコントロールが firstから second に移動するときに、1 つの値をスキップしますtextField

4

1 に答える 1

1

答えはあなたの質問の中にありますが、あなたのものですが、私はそれを変更しました。

-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
if (textField == zipCode1TV) {
        txtFieldSelected = @"zipCode1TV";
    } else if(textField == zipCode2TV){
        txtFieldSelected = @"zipCode2TV";
    }
    return YES;
}

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

    if ([txtFieldSelected isEqual: @"zipCode1TV"]) {
        //here set the maximum character length and transfer control when newLength exceed maxChar
         int maxChar = 5;
        NSUInteger newLength = [textField.text length] + [string length] - range.length;
        if (newLength >5) {
            zipCode2TV.text = string;
            [zipCode2TV becomeFirstResponder];
        }
        return (newLength <= maxChar);
    }
    if ([txtFieldSelected isEqual: @"zipCode2TV"]) {
        int maxChar = 4;
        NSUInteger newLength = [textField.text length] + [string length] - range.length;
        return (newLength <= maxChar);
    }
    return YES;
}

-(void)textFieldDidEndEditing:(UITextField *)textField
{

    if ([txtFieldSelected isEqual: @"zipCode2TV"] ||[txtFieldSelected isEqual: @"zipCode2TV"]) {
        zipCode =[NSString stringWithFormat:@"%@%@",zipCode1TV.text,zipCode2TV.text];
        NSLog(@"%@",zipCode);
    }
} 
于 2013-06-10T05:56:35.287 に答える