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

如何创build和添加多个UITextField到我的控制器?

我可以创build一个,就像这样:

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控件的最佳方法?

把它放在一个循环中,抵消每个文本字段的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]; 将返回零,并调用becomeFirstResponder nil将无所事事。 但是你可以检查nextTextField是否为零,然后做其他的事情,无论你喜欢什么。

您可以使用界面构build器来创build一个视图(大于屏幕尺寸)并以编程方式将其添加到scrollView。 这在我看来是最好的方法。