测试已测试 | ✗ |
语言语言 | Obj-CObjective C |
许可证 | MIT |
发布日期最新发布 | 2014年12月 |
由 Jonathan Sibley 维护。
HTAutocompleteTextField 是 UITextField 的一个子类,可以实时显示文本建议。这对于在用户输入电子邮件地址时自动建议域名非常理想。
您可以通过下面的动画 Gif、在 Youtube 上观看或阅读 HotelTonight 工程博客 上的相关 博客文章 了解该功能。
创建一个 HTAutocompleteTextField
实例,就像创建 UITextField
一样。您可以通过编程方式或 Interface Builder 完成。编程如下所示
HTAutocompleteTextField *textField = [[HTAutocompleteTextField alloc] initWithFrame:CGRectMake(0,0,100,31)];
数据源是自动完成逻辑的大脑。如果您只想自动完成电子邮件地址,则可以从示例项目中引用 HTAutocompleteManager
,如下所示
textField.autocompleteDataSource = [HTAutocompleteManager sharedManager];
textField.autocompleteType = HTAutocompleteTypeEmail;
HTAutocompleteManager
(包括在示例项目中)提供了电子邮件地址自动完成功能。它包含了一个根据 HotelTonight 客户数据库得出的顶级电子邮件域列表。您可能希望调整此电子邮件域列表以匹配您的客户,或者您可能希望编写不同类型文本字段的自动完成逻辑(在演示中,自动完成颜色名称)。
或者,您可能希望创建自己的数据源类,并使用 autocompleteType
属性来区分具有不同数据类型的字段。一个 HTAutocompleteTextField
的数据源必须实现以下方法,它作为 HTAutocompleteDataSource
协议的一部分。
- (NSString *)textField:(HTAutocompleteTextField *)textField completionForPrefix:(NSString *)prefix ignoreCase:(BOOL)ignoreCase
您还可以为所有 HTAutocompleteTextField
的实例设置一个默认的 dataSource
。在示例项目中,我们使用一个 HTAutocompleteManager
单例
[autocompleteTextOffset setDefaultAutocompleteDataSource:[HTAutocompleteManager sharedManager]];
通过设置 autocompleteTextOffset
来调整自动完成标签的位置
textField.autocompleteTextOffset = CGPointMake(10.0, 10.0);
为了对自动完成标签进行更动态的定位,从 HTAutocompleteTextField
派生一个子类并重写 - (CGRect)autocompleteRectForBounds:(CGRect)bounds
。
要调整自动完成标签的属性(例如 font
、textColor
),请通过 AutocompleteTextField autocompleteLabel
属性来实现。
textField.autocompleteLabel.textColor = [UIColor grayColor];
除了观察标准的 UITextField
通知(例如 UITextFieldTextDidChangeNotification
及其相关通知)之外,您还可以使用 [HTAutocompleteTextField autoCompleteTextFieldDelegate]
监听从某些事件。如果您正在收集分析数据,这将特别有用。
给作者 @jonsibs 发推文,并查看 HotelTonight 的工程博客:http://engineering.hoteltonight.com
还可以查看 HotelTonight 的其他 iOS 开源项目