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