如何在 iOS 5 中添加多个 UITextfield?

Posted

技术标签:

【中文标题】如何在 iOS 5 中添加多个 UITextfield?【英文标题】:How to add multiple UITextfield in iOS 5? 【发布时间】:2012-02-12 08:40:53 【问题描述】:

如何创建多个 UITextField 并将其添加到我的控制器?

我可以创建一个,像这样:

UITextField *tf = [[UITextField alloc] initWithFrame:CGRectMake(5,5,100,25)];
tf.borderStyle = UITextBorderStyleRoundedRect;
[tf setReturnKeyType:UIReturnKeyDefault];
[tf setEnablesReturnKeyAutomatically:YES];
[tf setDelegate:self];
[self.view addSubview:tf]

但是我需要为每个 UITextField 都这样做吗?

模板 UI 控件的最佳方法是什么?

【问题讨论】:

你能解释一下你的目标是什么吗?你想使用什么类型的容器视图?谢谢。 我正在为客户构建一个长数据输入表单 - 这些只是进入标准视图控制器。 【参考方案1】:

把它放在一个循环中,偏移每个文本字段的Y位置并标记每个文本字段:

for (int i = ; i < numberOfTextFieldsNeeded; i++) 
    UITextField *tf = [[UITextField alloc] initWithFrame:CGRectMake(5, 5 + 35 * i ,100,25)]; // 10 px padding between each view
    tf.tag = i + 1; // tag it for future reference (+1 because tag is 0 by default which might create problems)
    tf.borderStyle = UITextBorderStyleRoundedRect;
    [tf setReturnKeyType:UIReturnKeyDefault];
    [tf setEnablesReturnKeyAutomatically:YES];
    [tf setDelegate:self];
    [self.view addSubview:tf]
    // don't forget to do [tf release]; if not using ARC

然后在委托方法中根据调用每个委托方法的 textField 的标签执行操作。例如当用户点击返回键时切换到下一个文本视图:

- (BOOL)textFieldShouldEndEditing:(UITextField *)textField

    [textField resignFirstResponder];
    UITextField *nextTextField = [self.view viewWithTag:textField.tag + 1];
    [nextTextField becomeFirstResponder];

请记住,在 Objective-C 中向 nil 发送消息不会崩溃,因此当用户在最后一个文本字段中点击返回键时它会非常好,因为 UITextField *nextTextField = [self.view viewWithTag:textField.tag + 1]; 将返回 nil,并且在 nil 上调用 becomeFirstResponder 就可以了没有。但是您可以检查 nextTextField 是否为 nil,然后根据您的喜好执行其他操作。

【讨论】:

感谢您的回答。我考虑过这个选项 - 但认为可能有一种方法可以继承 UITextField 并让它返回一个带有我的默认设置的对象。这样我就可以在整个项目中使用它——但我不知道如何让子类方法发挥作用。【参考方案2】:

您可以使用界面生成器创建一个视图(大于屏幕适合的大小)并以编程方式将其添加到滚动视图。 在我看来,这是最好的方法。

【讨论】:

以防其他人想知道如何在 IB 中执行此操作 - 您可以在 ios 5 中使用静态单元格,您可以在 IB 中滚动它们。

以上是关于如何在 iOS 5 中添加多个 UITextfield?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用swift在ios中动态/编程添加多个UITableView? [关闭]

如何在 iOS 项目中添加两个或多个 kotlin 原生模块

如何在 ios 应用程序中的谷歌地图上添加多个引脚

如何在 iOS 7 中向 UIAlertView 添加多个 UITextField?

如何在 Angular 5 HttpInterceptor 中添加多个标头

ios编程:使用线程将多个图像添加到库中