【发布时间】:2014-05-18 06:49:59
【问题描述】:
我正在尝试实现UIScrollView,但那里的每个教程都处理预设数量的项目。
我有多个UITextField,但文本字段的数量各不相同。基本上,只要一个textField 包含文本,另一个空的就会出现在其下方,允许用户填写无限数量的文本字段。
只要用户在前一个文本字段中键入内容,我的代码就会创建一个新文本字段。这个的x-coordinates和前一个一样,但是新的y-coordinates等于前一个的高度+5px。
我正在使用情节提要,并且我已将我的原始 textField 放在 UIScrollView 中。我已将此scrollView 连接到我的代码,并以这种方式添加一个新文本字段:[self.scrollView addSubview:newTextField];
但是,当textFields 的数量超过scrollView 时,我无法滚动显示已添加的新数量。
我该怎么做呢?我认为我没有完全理解 setContentSize 的东西,所以它可能与此有关。下面是一些图片和代码来解释我的问题:
添加新文本字段的代码:
UITextField *newTextField = [[UITextField alloc]initWithFrame:CGRectMake(textField.frame.origin.x, textField.frame.origin.y + textField.frame.size.height+5, textField.frame.size.width, textField.frame.size.height)];
newTextField.placeholder = @"Add more text";
newTextField.borderStyle = UITextBorderStyleNone;
newTextField.font = [UIFont systemFontOfSize:14];
newTextField.autocorrectionType = UITextAutocorrectionTypeYes;
newTextField.clearButtonMode = UITextFieldViewModeWhileEditing;
newTextField.autocapitalizationType = UITextAutocapitalizationTypeSentences;
newTextField.returnKeyType = UIReturnKeyDone;
[newTextField setTag:textFieldTag];
newTextField.delegate = self;
[self.scrollView addSubview:newTextField];
故事板:
在这里你可以看到我是如何在滚动视图中放置原始文本字段的
它在模拟器中的样子:
当您在文本字段中输入文本时,会发生这种情况:
一个空的文本域出现在前一个文本域的下方。
但是,当您超出 ScrollView 时,就会发生这种情况
您无法再看到新的 textField,因为它位于 scrollView 的边界之下。你也不能滚动显示它。
有谁知道如何解决这个问题?如果你有时间,你会怎么做才能让滚动视图自动向下滚动以显示已添加的新文本字段?
非常感谢任何帮助!谢谢!
【问题讨论】:
-
您为什么决定不使用表格视图?它似乎更适合这个问题。
-
我考虑过使用 tableview,但最终决定不使用它,因为屏幕上的信息将比您从图像中看到的更多(其中包括右侧的图像等等)。但是,如果这是不可能的,tableview 是我的备用解决方案。
-
发布更新代码
contentSize。 -
注意:它应该类似于
self.scrollView.contentSize = CGSizeMake(CGRectMaxX(newTextField.frame), CGRectMaxY(newTextField.frame)) -
正如我所说,我不太明白
contentSize的事情。它应该是内容的大小吗?实际UIScrollView的大小是否重要?我应该在哪里设置它?至于现在,我已经在ViewDidLoad函数中将它设置为一个随机(小)数字,以查看它是否会滚动,但它不会。我最初的contentSize应该是什么?我应该在添加新文本字段时更新它吗?
标签: ios objective-c xcode uiscrollview