【问题标题】:Adding more UITextField on View when Typing On A UITextField [closed]在 UITextField 上键入时在视图上添加更多 UITextField [关闭]
【发布时间】:2013-09-26 12:54:27
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    试试这个

    步骤:1 在全局中清除这个 tagCounter 变量

     int tagCounter=1;
    

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

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

    Step: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;
        }
    }
    

    【讨论】:

    • 非常感谢我在这个结构中已经很长时间了....
    【解决方案2】:

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

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

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

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

    【讨论】:

    • @Zsolt:我想在当前的 UITextField 为空时删除下一个 UITextField,而不是单击按钮。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-13
    • 1970-01-01
    • 1970-01-01
    • 2011-08-22
    • 1970-01-01
    • 2014-02-12
    • 1970-01-01
    相关资源
    最近更新 更多