1.MLPAutoCompleteTextField 效果如下:
MLPAutoCompleteTextField 下载地址:https://github.com/EddyBorja/MLPAutoCompleteTextField
2.简单使用
-》控件初始化
- (void)viewDidLoad
{
if ([[[UIDevice currentDevice] systemVersion] compare:@"6.0" options:NSNumericSearch] != NSOrderedAscending) {
[passportField registerAutoCompleteCellClass:[CustomAutoCompleteCell class] forCellReuseIdentifier:@"CustomCellId"];
}
else{
passportField.applyBoldEffectToAutoCompleteSuggestions = NO;
}
[passportField setAutoCompleteDataSource:self];
[passportField setAutoCompleteDelegate:self];
[passportField setAutoCompleteBoldFontName:FOUNDFONT];
[passportField setAutoCompleteFontSize:17.0];
[passportField setAutoCompleteTableBackgroundColor:[UIColor whiteColor]];
[passportField setFont:[UIFont fontWithName:FOUNDFONT size:17]];
[super viewDidLoad];
// Do any additional setup after loading the view.
}
-》实现数据源
#pragma mark - MLPAutoCompleteTextField DataSource
//example of asynchronous fetch:
- (void)autoCompleteTextField:(MLPAutoCompleteTextField *)textField
possibleCompletionsForString:(NSString *)string
completionHandler:(void (^)(NSArray *))handler
{
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0);
dispatch_async(queue, ^{
NSRange range = [[textField text] rangeOfString:@"@"];//判断字符串是否包含
if (range.length >0)//包含@不做任何动作
{
[self performSelectorOnMainThread:@selector(dismissAutoCompleteTable) withObject:self waitUntilDone:NO];
}
else//不包含@,进行自动补全
{
[self performSelectorOnMainThread:@selector(showAutoCompleteTable) withObject:self waitUntilDone:NO];
NSArray *completions = [self allEmails:[textField text]];
handler(completions);
}
});
}
-(void)dismissAutoCompleteTable{
[passportField setAutoCompleteTableViewHidden:YES];
}
-(void)showAutoCompleteTable{
[passportField setAutoCompleteTableViewHidden:NO];
}
- (NSArray *)allEmails:(NSString *)textFieldText
{
NSMutableArray *countries = [NSMutableArray arrayWithCapacity:10];
[countries addObject:[NSString stringWithFormat:@"%@@sogou.com",textFieldText]];
[countries addObject:[NSString stringWithFormat:@"%@@qq.com",textFieldText]];
[countries addObject:[NSString stringWithFormat:@"%@@sina.com",textFieldText]];
[countries addObject:[NSString stringWithFormat:@"%@@163.com",textFieldText]];
[countries addObject:[NSString stringWithFormat:@"%@@126.com",textFieldText]];
return countries;
}
-》实现代理
#pragma mark - MLPAutoCompleteTextField Delegate
- (BOOL)autoCompleteTextField:(MLPAutoCompleteTextField *)textField
shouldConfigureCell:(UITableViewCell *)cell
withAutoCompleteString:(NSString *)autocompleteString
withAttributedString:(NSAttributedString *)boldedString
forAutoCompleteObject:(id<MLPAutoCompletionObject>)autocompleteObject
forRowAtIndexPath:(NSIndexPath *)indexPath;
{
return YES;
}
- (void)autoCompleteTextField:(MLPAutoCompleteTextField *)textField
didSelectAutoCompleteString:(NSString *)selectedString
withAutoCompleteObject:(id<MLPAutoCompletionObject>)selectedObject
forRowAtIndexPath:(NSIndexPath *)indexPath
{
}