UITextField 初始化缓慢?

Posted

技术标签:

【中文标题】UITextField 初始化缓慢?【英文标题】:UITextField slow to initialize? 【发布时间】:2011-08-21 20:07:48 【问题描述】:

我正在以编程方式将大约 100 个 UITextFields 放入 UIScrollView 中,用于精心制作的数据输入应用程序(不要问....bletch),我发现生成所有这些 UITextFields 花费的时间太长......大约 4 秒。

有没有更好或更快的方法来以编程方式制作如此多的用户界面对象?

例如,加载 Xib/Nib 并尝试根据需要对其进行修改是否更明智?

谢谢。

【问题讨论】:

【参考方案1】:

您是否想过只创建几个 UITextFields 并在它们离开屏幕后重新使用它们,就像 UITableView 对单元格所做的那样?

【讨论】:

【参考方案2】:

哎呀,作为数据输入的 100 个文本字段太苛刻了。但是当客户坚持一个非常愚蠢的想法时,我知道问题所在。

返回主题:问题不在于您的UITextFields 的实际生成。这是 Cocoa touch 处理视图的方式。视图非常缓慢。你用笔尖的想法更糟,因为它们实际上更慢。

避免这种情况的唯一方法是简单地不绘制(添加)许多视图。只需添加当前在滚动视图可见区域中的视图并删除其他视图。 Cocoa touch 其实已经有一个很好的控件了,叫做UITableView。 ;)

正是由于这些原因,Apple 在 UITableView 中创建了出队/重用模式。 因此,我对您的建议是使用表格视图而不是带有自定义单元格的滚动视图(以避免分隔符等),并将这些单元格出列/重用并用您存储在某个数组中的 UITextField 填充它们。

【讨论】:

【参考方案3】:

我的第一个想法是编写一个计时器并以小步骤 1 个(或更多)加载它们,以便 UI 不会冻结(仍需要 4 秒,但至少用户可以输入加载的文本字段)

here是怎么做定时器的

【讨论】:

以上是关于UITextField 初始化缓慢?的主要内容,如果未能解决你的问题,请参考以下文章

UITextField右对齐iOS 7

touchesBegan 不触发

切换uitextf时停止键盘关闭

在不禁用上下文菜单的情况下管理 UITextfiled 上的长按?

使用 uitextfields 创建 uitableview 表单

在 Swift 的弹出式 datePickerView 中添加完成按钮?