2011-12-02 83 views
0

我在UIView中添加多个UITextFields时遇到了问题,它们被正确添加,但恰巧用户只能编辑其中的第一个(触摸它以便键盘出现),我已经将委托设置为self,并且实现了方法textFieldDidBeginEditing。可悲的是,只有第一个反应触发这种方法,其他人似乎是“不可触摸的”。以编程方式添加多个UITextField,只能编辑一个

你有没有经历过这个?

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"); 
} 

感谢

+1

如果框架的高度<90,则检查框架中的“listView”,那么它是一个真实的行为。 – beryllium

+0

当你说“正确添加”时,它们是否出现在正确位置的屏幕上?试试'setText:[NSString stringWithFormat:@“%d”,i]'来更好地了解正在发生的事情。另外,你怎么声明'fields'? –

+0

ok铍是正确的,我没有修改listView的框架,所以触摸只被传输到第一个UITextField碰巧是在listViews框架内。制作: [listView setFrame:CGRectMake(listView.frame.origin.x,listView.frame.origin.y,320,verticalOffset + 40)]; 做到了!谢了哥们! –

回答

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; } 
相关问题