如何在一个视图中创建超过40-50个文本字段和标签?

时间:2009-05-19 13:09:15

标签: iphone xcode interface-builder

如何在单个视图中创建超过40-50个文本字段和标签,何时选择键入的文本字段不应隐藏文本字段?

1 个答案:

答案 0 :(得分:1)

您可能希望以编程方式创建它们 - 使用Interface Builder制作40-50个文本字段非常耗时。

对于键盘,您可以使主UIView可滚动,然后每当显示键盘时,检查选择了哪个文本字段并将其滚动到屏幕的上半部分。 (如果您的应用程序是可旋转的,请确保“屏幕的上半部分”根据您的方向更改定义。)

这个想法的一些示例代码:

// Determine some basic info
int numberOfTextfields = 50;
int textfieldHeight = 40;
int textfieldWidth = 200;

// Create the UIScrollView
UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:
                                   CGRectMake(0, 0, 
                                              numberOfTextfields*textfieldHeight,
                                              textfieldWidth)];

// Create all the textfields
NSMutableArray *textfields = [NSMutableArray arrayWithCapacity:
                                   (NSUInteger)numberOfTextfields];
for(int i = 0; i < numberOfTextfields; i++) {
    UITextField *field = [[UITextField alloc] initWithFrame:
                                CGRectMake(0,
                                           i*textFieldHeight,
                                           textFieldHeight,
                                           textFieldWidth)];
    [scrollView addSubview:field];
    [textfields addObject:field];
}

在这段代码中,我们首先设置一些变量来确定文本字段的行为(它们的位置,外观和数字),然后创建主UIScrollView。完成后,我们创建了一堆具有前面指定尺寸的UITextField,同时将它们添加为scrollview的子视图,并将它们保存在一个数组中供以后参考(如果需要)。

稍后,您将要覆盖UITextFields的becomeFirstResponder:方法(可能是UITextField的子类),这样每当文本字段成为第一个响应者并显示键盘时,它会调用setContentOffset:animated: scrollview显示自己。