我有一个问题,在一个UIView中添加多个UITextFields,它们被正确添加,但碰巧用户只能编辑它们中的第一个(触摸它,所以键盘出现),我已经将委托设置为自我,并实现了textfieldbeginediting方法。遗憾的是,只有第一个反应触发了这个方法,其他的似乎是"不可触及的"。
你以前有过这种经历吗?
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");
}
谢谢
我会这样做,这只是一个面向对象的答案,应该工作,已经为我工作了很多次。
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; }