UITextField Autocomplete – iPhone SDK

Я пытаюсь выяснить, есть ли способ реализовать функцию автозаполнения в UITextField для определенных значений.

Я знаю, что UITextField может сделать это, используя словарь iPhone (так же, как поиск google в safari и т. Д.), Но я хочу иметь возможность программно корректно использовать определенные значения, которые я указываю.

Кто-нибудь знает, как это сделать?

Большое спасибо, Бретт

Brett,

Я сделал что-то очень похожее на это, работая над недавним и довольно крупным проектом. У нас был постоянно меняющийся список автозаполняющих терминов и построил автоматическое заполнение вокруг них.

Во-первых, вы захотите создать какой-то тип автоматического controllerа. Он должен взять строку и вернуть все возможные автополные термины для этой строки.

 -(NSArray *)completionsForString:(NSString *)myString; 

Затем проверьте class UIMenuController. Это class, который показывает параметры вырезания / копирования / вставки во многих приложениях. Вы можете получить общий экземпляр, заполнить элементы меню самостоятельно и показать его над текстовым полем. Затем пользователь может просто нажать термин, который они хотят.

В конце концов, решение работало очень хорошо для наших нужд. Надеюсь, это сработает для вас.

Просмотрите этот учебник от Рэя Вендерлиха, который демонстрирует один из способов достижения пользовательского автозаполнения

В качестве альтернативы вы можете использовать этот подclass UITextField (вдохновленный DOAutocompleteTextField):

https://github.com/hoteltonight/HTAutocompleteTextField

Он обладает еще несколькими функциями и активно развивается. В этом примере показано, как использовать массив в качестве источника данных для текста с автоматической записью. Он использует тот же подход, что и DOAutocompleteTextField, в том смысле, что он отображает предложенный текст завершения «призрачный» в текстовом поле по типу пользователя.

Вы заглянули в UISearchDisplayController ? В разделе «Переполнение стека» есть несколько streamов , включая ссылки на core data, если это то, что вы используете. Также некоторые альтернативные методы , в другом месте.

С помощью вышеупомянутого учебника Ray Wenderlich я только что внедрил эту версию для фильтрации имен в существующем UITableView .

Я установил делегат текстового поля в качестве моего controllerа представления, моего controllerа представления как UITextFieldDelegate и реализовал эти два метода:

 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { NSString *substring = [NSString stringWithString:textField.text]; substring = [substring stringByReplacingCharactersInRange:range withString:string]; [self searchAutocompleteEntriesWithSubstring:substring]; return YES; } - (void)searchAutocompleteEntriesWithSubstring:(NSString *)substring { NSMutableArray *autoCompleteArray = [[NSMutableArray alloc]init]; [self retrieveData]; for(NSString *curString in _staffTableArray) { NSString *lowerCaseCur = [curString lowercaseString]; NSRange substringRange = [lowerCaseCur rangeOfString:substring]; if (substringRange.location == 0) { [autoCompleteArray addObject:curString]; } } if (![substring isEqualToString:@""]) { _staffTableArray = [NSMutableArray arrayWithArray:autoCompleteArray]; } [_staffListTableView reloadData]; } 

используйте этот метод делегата. вы можете заменить значения, которые вы указали.

 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string; // return NO to not change text if ([string isEqualToString:@"StackO"]) { [email protected]"StackOverflow"; } return YES; } 

Просто столкнулся с этой нитью, потому что мне нужно что-то подобное. Как реализовать собственный поиск с помощью метода UITextfieldDelegate:

 - (BOOL)textField:(UITextField *) textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 

Как вы, вероятно, знаете, этот метод вызывается для каждого ввода UITextfield.

  • Групповой массив объекта, вложенного в некоторые из ключей с определенными именами
  • Не удается скрыть строку состояния в iOS7
  • Заголовок песни iTunes Прокрутка в cocoa
  • Прослушать изменение значения моего текстового поля
  • Управление памятью в Qt?
  • Создание объектов: конструкторы или статические заводские методы
  • Использование NSPredicate для фильтрации NSArray на основе ключей NSDictionary
  • Выполнить .join по значению в массиве объектов
  • Связывание данных непосредственно с запросом хранилища (DbSet, DbQuery, DbSqlQuery) не поддерживается
  • Сохранить NSDictionary для plist
  • Возможно ли увидеть все ссылки на объект во время выполнения?
  • Давайте будем гением компьютера.