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?
问问题
1484 次
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 回答