自动完成 1.2.1

自动完成 1.2.1

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最新发布2017年10月

3Pillar Global维护。



  • 作者:
  • Bogdan Todea-Cristea

描述

这是一个框架,它提供下拉列表形式的文本字段建议。它适用于iOS 8及更高版本,Objective-C或Swift。

项目理由

该框架的目的是提供一个非常实用的简单功能——自动完成文本字段。iOS自动完成是一个iOS模块,其行为类似于普通的文本字段,但它还提供了一种在下拉列表中向用户提供建议的功能。

安装

###使用CocoaPods安装

运行终端

  • 切换到项目文件夹
  • 使用以下命令
pod init
  • 将代码添加到Podfile中
platform :ios, '9.0'

target 'YourProjectName' do
  use_frameworks!
    pod 'AutoCompletion'
end

  • 请记住使用工作空间打开项目

###使用Carthage安装

运行终端

  • 切换到项目文件夹
  • 使用以下命令
echo git \"[email protected]:3pillarlabs/ios-autocomplete.git\" \"AutoCompleteFramework\" > Cartfile
  • 使用以下命令运行Carthage
carthage update
  • 将“AutoCompletion.framework”添加到项目文件夹中的Carthage/Build/iOS中的“嵌入的二进制文件”列表(位于Xcode -> Target -> “通用”选项卡)中

使用方法

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开发和维护。