代码之家  ›  专栏  ›  技术社区  ›  Stack.Blue

如何在一个循环中添加多个textField?

  •  0
  • Stack.Blue  · 技术社区  · 12 年前

    我想在一个循环中添加多个UITextFields。并在用户与UITextFields交互时识别它们。所以请帮帮我。

    谢谢

    目前我单独放置UITextField,如下所示

    txt_FirstName=[[UITextField alloc]initWithFrame:CGRectMake(framex1, framey1, framex2, framey2)];
    txt_FirstName.borderStyle = UITextBorderStyleRoundedRect;
    txt_FirstName.font = [UIFont systemFontOfSize:15];
    txt_FirstName.placeholder = @"First Name";
    txt_FirstName.autocorrectionType = UITextAutocorrectionTypeNo;
    txt_FirstName.keyboardType = UIKeyboardTypeDefault;
    txt_FirstName.returnKeyType = UIReturnKeyDone;
    txt_FirstName.clearButtonMode = UITextFieldViewModeWhileEditing;
    txt_FirstName.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;    
    txt_FirstName.delegate = self;
    [frameView addSubview:txt_FirstName];
    [txt_FirstName release];
    
    framey1=framey1+50;
    
    txt_MiddleName=[[UITextField alloc]initWithFrame:CGRectMake(framex1, framey1, framex2, framey2)];
    txt_MiddleName.borderStyle = UITextBorderStyleRoundedRect;
    txt_MiddleName.font = [UIFont systemFontOfSize:15];
    txt_MiddleName.placeholder = @"Middle Name";
    txt_MiddleName.autocorrectionType = UITextAutocorrectionTypeNo;
    txt_MiddleName.keyboardType = UIKeyboardTypeDefault;
    txt_MiddleName.returnKeyType = UIReturnKeyDone;
    txt_MiddleName.clearButtonMode = UITextFieldViewModeWhileEditing;
    txt_MiddleName.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;    
    txt_MiddleName.delegate = self;
    [frameView addSubview:txt_MiddleName];
    [txt_MiddleName release];
    
    2 回复  |  直到 12 年前
        1
  •  5
  •   Mehul Mistri    12 年前

    请使用此项,但在.h文件中实现UITextField委托。但你应该根据你的要求更换你的占位符,比如FirstName为1,MiddleName为2等。

    首先创建这样的公共函数,

    -(void)setTextfieldStyle:(UITextField *)pTmpTextField
    {
            pTmpTextField.borderStyle = UITextBorderStyleRoundedRect;
            pTmpTextField.font = [UIFont systemFontOfSize:15];
            pTmpTextField.placeholder = @"First Name";
            pTmpTextField.autocorrectionType = UITextAutocorrectionTypeNo;
            pTmpTextField.keyboardType = UIKeyboardTypeDefault;
            pTmpTextField.returnKeyType = UIReturnKeyDone;
            pTmpTextField.clearButtonMode = UITextFieldViewModeWhileEditing;
            pTmpTextField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;    
            pTmpTextField.delegate = self;
    }
    

    并将其用于创建UITextFiled,

    int y = 0;
    for(int i=0;i < 5;i++)
    {
        UITextField *txtTemp=[[UITextField alloc]initWithFrame:CGRectMake(0, y, 300, 31)];
        txtTemp.tag = i;
        [self setTextfieldStyle:txtTemp];
        [self.view addSubview:txtTemp];
        [txtTemp release];
        y+=36;
    }
    

    这是UITextField的委托方法,

    - (void)textFieldDidBeginEditing:(UITextField *)textField
    {
        NSLog(@"%@",textField.text);
    }
    

    希望这对你有用。。

        2
  •  0
  •   Gordon Dove    12 年前

    如果您想在循环中设置一堆文本字段的属性,您还可以执行以下操作:

    NSMutableArray* allTextFields = [NSMutableArray array];
    
    // create the textFields here, I'm assuming you need to keep individual
    // references to them.
    txt_FirstName=[[UITextField alloc]init];
    pTmpTextField.placeholder = @"First Name";
    [allTextFields addObject:txt_FirstName];
    
    // now add the common style stuff and frame
    [allTextFields enumerateObjectsUsingBlock:^(UITextField* textField, NSUInteger idx, BOOL* stop) {
        textField.frame = CGRectMake(framex1, framey1 + ( 50 * idx), framex2, framey2);
        textField.borderStyle = UITextBorderStyleRoundedRect;
        textField.font = [UIFont systemFontOfSize:15];
        textField.placeholder = @"First Name";
        textField.autocorrectionType = UITextAutocorrectionTypeNo;
        textField.keyboardType = UIKeyboardTypeDefault;
        textField.returnKeyType = UIReturnKeyDone;
        textField.clearButtonMode = UITextFieldViewModeWhileEditing;
        textField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;    
        textField.delegate = self;
    }];