HTAutocompleteTextField 1.3.2

HTAutocompleteTextField 1.3.2

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布日期最新发布2014年12月

Jonathan Sibley 维护。



  • 作者:
  • Jonathan Sibley

概述

HTAutocompleteTextField 是 UITextField 的一个子类,可以实时显示文本建议。这对于在用户输入电子邮件地址时自动建议域名非常理想。

您可以通过下面的动画 Gif、在 Youtube 上观看或阅读 HotelTonight 工程博客 上的相关 博客文章 了解该功能。

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

要调整自动完成标签的属性(例如 fonttextColor),请通过 AutocompleteTextField autocompleteLabel 属性来实现。

textField.autocompleteLabel.textColor = [UIColor grayColor];

事件监听

除了观察标准的 UITextField 通知(例如 UITextFieldTextDidChangeNotification 及其相关通知)之外,您还可以使用 [HTAutocompleteTextField autoCompleteTextFieldDelegate] 监听从某些事件。如果您正在收集分析数据,这将特别有用。

等等。

  • 尽可能在您的应用程序中使用这个功能,尤其是电子邮件地址——您的用户会感激的!
  • 欢迎提交贡献。
  • 感谢作者的归属感(让我们一起宣传),但不是强制性的。

使用过它吗?喜欢/讨厌它?

给作者 @jonsibs 发推文,并查看 HotelTonight 的工程博客:http://engineering.hoteltonight.com

还可以查看 HotelTonight 的其他 iOS 开源项目