0

UIView に複数の UITextField を追加する際に問題が発生しました。それらは正しく追加されていますが、ユーザーが最初のフィールドしか編集できない (キーボードが表示されるようにタッチする) ことがあり、デリゲートを自分自身に設定し、メソッド textFieldDidBeginEditing を実装しました。 . 悲しいことに、最初に反応したものだけがこのメソッドをトリガーし、他のものは「手に負えない」ようです。

これを経験したことがありますか?

for (int i = 0;i<N;i++){


    CGRect textFieldNewFrame = CGRectMake(200,60 + 34*i,72,30);        
    fields[i] = [[UITextField alloc] initWithFrame:textFieldNewFrame];
    [fields[i] setTag:i];
    [fields[i] setText:@"0"];
    [fields[i] setFont:appFont];
    [fields[i] setTextColor:appColor];
    [fields[i] setBackground:[UIImage imageNamed:@"text_field_off.png"]];
    [fields[i] setTextAlignment:UITextAlignmentCenter];       
    [fields[i] setKeyboardType:UIKeyboardTypeDecimalPad];
    [fields[i] setDelegate:self];
    [fields[i] setUserInteractionEnabled:TRUE];
    [listView addSubview:fields[i]];

    verticalOffset += 34;
}


- (void)textFieldDidBeginEditing:(UITextField *)textField;{
    NSLog(@"TextField touched");
}

ありがとう

4

1 に答える 1

0

私はこれを行います、それは単なるオブジェクト指向の答えであり、機能するはずであり、私のために何度も機能してきました。

NSMutableArray *fields=[[NSMutableArray alloc] init];

for (int i = 0;i<N;i++){       
CGRect textFieldNewFrame = CGRectMake(200,60 + 34*i,72,30);             
[fields  addObject:[[UITextField alloc] initWithFrame:textFieldNewFrame]];     
[[fields objectAtIndex:i] setTag:i];     
[[fields objectAtIndex:i] setText:@"0"];     
[[fields objectAtIndex:i] setFont:appFont];     
[[fields objectAtIndex:i] setTextColor:appColor];     
[[fields objectAtIndex:i] setBackground:[UIImage imageNamed:@"text_field_off.png"]];     
[[fields objectAtIndex:i] setTextAlignment:UITextAlignmentCenter];            
[[fields objectAtIndex:i] setKeyboardType:UIKeyboardTypeDecimalPad];     
[[fields objectAtIndex:i] setDelegate:self];     
[[fields objectAtIndex:i] setUserInteractionEnabled:TRUE];     
[listView addSubview:[fields objectAtIndex:i]];
verticalOffset += 34; } 
于 2011-12-02T14:57:08.197 に答える