如何在 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 7 中向 UIAlertView 添加多个 UITextField?