如果添加了新的 UITextField,如何向下移动许多 UITextField

Posted

技术标签:

【中文标题】如果添加了新的 UITextField,如何向下移动许多 UITextField【英文标题】:How to move down many UITextFields if a new UITextField is added 【发布时间】:2013-11-11 13:10:44 【问题描述】:

我有一个 ViewController,许多 UITextFields(一个在另一个下面)和一个按钮在第一个 UITextField 的右侧。

当按下按钮时,我希望在此下方显示另一个 UITextField(每次我按下按钮时,都会在另一个下创建一个文本字段)并向下移动其他一些像素。

我该怎么做?我想我必须用 InterfaceBuilder 制作一个新的 UIView,其中的文本字段会向下移动一些像素,但我不能这样做。

【问题讨论】:

【参考方案1】:

使用 UITableViewController 怎么样?基本上,您可以将第一个 UITextField(在 UITableViewCell 内)和第二部分中的其余字段设置为第一部分。然后,每次按下按钮时,您都会在第一部分插入一个新单元格。

管理字段的插入和删除很容易,无需手动处理视图的移动(它们由 UITableView 自动处理),您所要做的就是更新数据源(单元格数) 并重新加载/插入单元格(reloadData 或 insertRowsAtIndexPaths:withRowAnimation:)。

【讨论】:

我可以使用界面生成器将文本字段添加到单元格中,还是必须以编程方式创建它们? 如果您在 Storyboard 中使用 UITableViewController,您可以在内部创建带有 UITextField 的 UITableViewCell 原型(直接来自 Interface Builder)。【参考方案2】:

如果您愿意,我建议一个非常简单的解决方案,即使用变量代替 CGRectMake 坐标中的 y 坐标

更多细节:

您必须以编程方式创建所有 UITextField,并且每当您分配 initwithFrame 时,任何 UITextField 都使用如下变量:

int y = 10; // By default value and make it a property and define in viewDidLoad or wherever

UITextField *txtField1 = [[UITextField alloc]initWithFrame:CGRectMake(10, 20 +y, 100, 50)];
        // set TextFields other values
[self addSubview:txtField1];

UITextField *txtField1 = [[UITextField alloc]initWithFrame:CGRectMake(10, 80+y, 100, 50)];
        // set TextFields other values
[self addSubview:txtField1];

现在,每当您单击添加 UITextField 按钮时,将 y 的值增加您想要的额外空间,例如:

-(void)onTapAddTextFieldButton
    y= y + 40;

【讨论】:

以上是关于如果添加了新的 UITextField,如何向下移动许多 UITextField的主要内容,如果未能解决你的问题,请参考以下文章

跳到下一个 UItextField

iOS开发者后台添加了新的UDID,如何更新自动管理签名证书的设备描述文件(Provisioning Profiles)?

iOS:向下移动 UITextField 的底部边框

设置 contentInset 并且 tableViewHeader 中的 UITextField 变为活动状态时 UITableView 向下滚动

如果生成了新的 JWT,如何使 JWT 过期

UITextField 禁用光标