在UITextField上键入时在视图上添加更多UITextField

时间:2013-09-26 12:54:28

标签: iphone ios objective-c uitextfield dynamic-typing

我是iOS开发的新手。 我想根据条件动态创建UITextFields。条件是,如果我开始在第一个UITextField上键入,它将在底部再创建一个UITextField,并在我开始在第二个上键入时创建第三个UITextField。 同样,如果上层UITextField中没有文本,我想删除底部文本。 任何帮助将不胜感激......

2 个答案:

答案 0 :(得分:1)

试试这个

步骤:1在全局

中取消此tagCounter变量
 int tagCounter=1;

步骤:2设置您的第一个UITextField标记和委托

 [MyFirstTextField setTag:tagCounter];
 [MyFirstTextField setDelegate:self];
 tagCounter+=1;

步骤:3写下两个方法来创建新的文本字段并删除文本字段

-(void)CreateNewTextField:(float)FromTop withTag:(int)Tag
{
     UITextField *NewTextField=[[UITextField alloc] initWithFrame:CGRectMake(0.0f, FromTop, 100.0f, 40.0f)];
     [NewTextField setDelegate:self];
     [NewTextField setTag:Tag];
     [[self view] addSubview:NewTextField];
}

-(void)RemoveTextField:(int)Tag
{
    for(UIView *sub in [[self view] subviews])
    {
        if([sub isKindOfClass:[UITextField class]])
        {
            if([sub tag]>=Tag)
            {
                [sub removeFromSuperview];
            }
        }
    }
}

步骤:4使用textField委托方法textFieldDidEndEditing创建新的textField并删除textfield

   -(void)textFieldDidEndEditing:(UITextField *)textField
 {
    if([[textField text] isEqualToString:@""])
    {
        int CurrentTag=[textField tag];
        [self RemoveTextField:CurrentTag+1];
    }
    else
    {
        CGRect CurrentTextFieldFrame=[textField frame];
        [self CreateNewTextField:CurrentTextFieldFrame.origin.y+CurrentTextFieldFrame.size.height+20.0f withTag:tagCounter];
        tagCounter+=1;
    }
}

答案 1 :(得分:0)

Here是一个关于如何从代码创建UITextField的教程。

你应该实现它的方法是,添加第一个文本字段,将它的委托设置为self,并在textFieldDidBeginEditing:方法中,创建另一个文本字段,设置它的委托并在其旁边创建一个按钮。如果你想删除它,我建议为UITextField添加相同的标签,并且它是相应的删除UIButton,然后当点击一个按钮时,从superview中删除带有该标签的所有视图。

我建议一步一步地尝试一切:

  • 从代码
  • 创建UITextField
  • 从代码
  • 创建UIButton
  • 将标记设置为UIView(UIButton和UITextField的超类)。
  • 实施UITextField委托方法。
  • 向UIButton添加自定义方法(删除方法)。
  • 根据标记从视图中删除UIView。