0

ビューの上にサブビューとして追加された digit6 までの digit1、digit2 などの名前の 6 つのテキストフィールドがあります。ユーザーが数字1テキストフィールドに数字を入力すると、数字2テキストフィールドがオートフォーカスされ、同様に、数字2テキストフィールドに数字が入力されたときに数字3がオートフォーカスされます。以下に示すのは、試したコードです。

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range  replacementString:(NSString *)string
{
    if(textField.text.length>=1)
    {
        [textField resignFirstResponder];
        UITextField *_textField=(UITextField*) [self.view viewWithTag:textField.tag+1];
        [_textField becomeFirstResponder];
    }
    return TRUE;
} 

ここで何が起こるかというと、digit1 に数字を入力すると、digit1 には表示されませんが、digit2 には表示されます。また、削除ボタンをクリックすると、現在のテキストフィールドのテキストを削除するのではなく、コントロールが後続のテキストフィールドに転送されます。助けてくださいこれを修正します。

4

3 に答える 3

0

t1、t2、t3 などの名前のテキストフィールドが 3 つあるとします。

t1 = 1、t2 = 3、および t3 = 3 のタグ値を設定します

すべてのテキストフィールドにタグ値を設定し、このコードを記述します

次に、このコードを記述します

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

switch(textField.tag){
case 1:{
    if(textField.text.length>=1)
    {
        [t1 resignFirstResponder];
        [t2 becomeFirstResponder];
        break;
    }
    }

case 2:{
    if(textField.text.length>=1)
    {
        [t2 resignFirstResponder];
        [t3 becomeFirstResponder];
        break;
    }
    }
case 3:{
    if(textField.text.length>=1)
    {
        [t3 resignFirstResponder];

    break;
    }
    }
}
}
    return TRUE;
} 
于 2013-08-08T18:44:19.310 に答える
0

私は解決策を見つけました

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

    NSString *str = [textField.text stringByReplacingCharactersInRange:range withString:string];
    if( [str length] > 0 ){
        textField.text = string;
        UIResponder* nextResponder = [textField.superview viewWithTag:(textField.tag + 1)];
        if (nextResponder) {
            [nextResponder becomeFirstResponder];
        }
        return NO;
    }    
    return YES;

} 
于 2013-08-08T18:58:18.653 に答える