0

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

4

2 回答 2

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];
            }
        }
    }
}

Step: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;
    }
}
于 2013-09-26T13:17:34.770 回答
0

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

您应该实现它的方式是,添加第一个文本字段,将其设置为 self,然后在 textFieldDidBeginEditing: 方法中创建另一个文本字段,设置它的代理并在其旁边创建一个按钮。如果要删除它,我建议为 UITextField 和它各自的删除 UIButton 添加相同的标签,然后当点击按钮时,从超级视图中删除带有该标签的所有视图。

我建议逐步尝试一切:

  • 从代码创建 UITextField
  • 从代码创建 UIButton
  • 将标签设置为 UIView(UIButton 和 UITextField 的超类)。
  • 实现 UITextField 委托方法。
  • 向 UIButton 添加自定义方法(删除方法)。
  • 根据标签从视图中删除 UIView。
于 2013-09-26T13:01:40.913 回答