这是一个框架,它提供下拉列表形式的文本字段建议。它适用于iOS 8及更高版本,Objective-C或Swift。
项目理由
该框架的目的是提供一个非常实用的简单功能——自动完成文本字段。iOS自动完成是一个iOS模块,其行为类似于普通的文本字段,但它还提供了一种在下拉列表中向用户提供建议的功能。
###使用CocoaPods安装
运行终端
pod init
platform :ios, '9.0'
target 'YourProjectName' do
use_frameworks!
pod 'AutoCompletion'
end
###使用Carthage安装
运行终端
echo git \"[email protected]:3pillarlabs/ios-autocomplete.git\" \"AutoCompleteFramework\" > Cartfile
carthage update
1. 导入自动完成框架。
Objective-C
@import AutoCompletion;
Swift
import AutoCompletion
2. 在视图中添加一个自动完成实例
2.1 在界面构建器中拖放一个UITextField实例。
2.2 将它的类更改为AutoCompletionTextField。
2.3 您还可以从界面构建器中自定义文本字段。
2.4 创建一个AutoCompletionTextField的引用。
3. 设置suggestionsResultDataSource。数据源需要符合AutoCompletionTextFieldDataSource协议
Swift
class AutoCompletionDataSource: NSObject, AutoCompletionTextFieldDataSource {
@IBOutlet weak var autoCompletionTextField: AutoCompletionTextField!
override func viewDidLoad() {
super.viewDidLoad()
autoCompletionOutlet.suggestionsResultDataSource = self
}
// MARK: DataSource
func fetchSuggestions(forIncompleteString incompleteString: String!,
withCompletionBlock completion: FetchCompletionBlock!) {
...code...
}
}
Objective-C
@interface AutoCompletionDataSource: NSObject <AutoCompletionTextFieldDataSource>
@end
@implementation AutoCompletionDataSource
- (void)fetchSuggestionsForIncompleteString:(NSString*)incompleteString
withCompletionBlock:(FetchCompletionBlock)completion {
...code...
}
@end
...
autoCompletionTextField.suggestionsResultDataSource = [AutoCompletionDataSource new];
4. 选项性地设置suggestionsResultDelegate以处理建议选择。
Swift
class ViewController: UIViewController, AutoCompletionTextFieldDelegate {
@IBOutlet weak var autoCompletionTextField: AutoCompletionTextField!
override func viewDidLoad() {
super.viewDidLoad()
autoCompletionTextField.suggestionsResultDelegate = self
}
// MARK: Delegate
func textField(_ textField: AutoCompletionTextField!, didSelectItem selectedItem: Any!) {
...code...
}
}
Objective-C
@interface ViewController: UIViewController <AutoCompletionTextFieldDelegate>
@property (weak, nonatomic) IBOutlet AutoCompletionTextField *autoCompletionTextField;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.autoCompletionTextField.suggestionsResultDelegate = self;
}
#pragma mark - Delegate
- (void)textField:(AutoCompletionTextField*)textField didSelectItem:(id)selectedItem {
...code...
}
5. 您还可以设置animationDelegate以提供自定义动画来显示结果。它需要符合AutoCompletionAnimator协议
Swift
class AutoCompletionAnimation: NSObject, AutoCompletionAnimator {
func showSuggestions(for textField: AutoCompletionTextField!,
table: UITableView!, numberOfItems count: Int) {
...code...
}
func hideSuggestions(for textField: AutoCompletionTextField!,
table: UITableView!) {
...code...
}
}
...
autoCompletionTextField.animationDelegate = AutoCompletionAnimation()
Objective-C
@interface AutoCompletionAnimation: NSObject<AutoCompletionAnimator>
@end
@implementation AutoCompletionAnimation
- (void)showSuggestionsForTextField:(AutoCompletionTextField*)textField
table:(UITableView*)table
numberOfItems:(NSInteger)count {
...code...
}
- (void)hideSuggestionsForTextField:(UITextField*)textField
table:(UITableView*)table {
...code...
}
@end
...
autoCompletionTextField.animationDelegate = [AutoCompletionAnimation new];
在demo分支中,您可以看到一个可工作的自动完成示例,其中建议结果来自三个不同的场景:CoreData、JSON和API。
如果书写文本和建议有不同的字母大小写,或者书写文本左移时,建议不会正确地重叠书写文本。
自动完成以MIT许可证发布。有关详细信息,请参阅LICENSE。
![3Pillar Global] (http://www.3pillarglobal.com/wp-content/themes/base/library/images/logo_3pg.png)
自动完成由3Pillar Global开发和维护。