0

How do I create more than 40-50 textfields and labels in a single view and when the textfield selected the keyboard should not hide the textfield?

4

1 回答 1

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,同时将它们添加为滚动视图的子视图,并将它们保存在一个数组中以供以后参考(如果需要)。

稍后,您将需要覆盖becomeFirstResponder:UITextFields 的方法(此处可能是 UITextField 的子类),以便当文本字段成为第一响应者并显示键盘时,它会调用setContentOffset:animated:滚动视图以显示自身。

于 2009-05-19T13:12:12.427 回答