30 votes

UITextField Autocomplete - SDK pour iPhone

J'essaie de comprendre s'il existe un moyen d'implémenter une fonctionnalité de saisie semi-automatique dans un UITextField pour des valeurs spécifiques.

Je sais que le UITextField peut le faire en utilisant le dictionnaire iPhone (un peu comme la recherche sur google dans safari, etc.), mais je veux pouvoir le programmer par rapport à certaines valeurs que je spécifie.

Quelqu'un connaît-il un moyen de le faire?

Merci beaucoup, Brett

12voto

DexterW Points 2687

Brett,

J'ai fait quelque chose de très similaire à ce tout en travaillant sur un récent et plutôt grand projet. Nous avons eu une évolution constante de la liste de saisie semi-automatique des termes et construit un auto-remplir autour d'eux.

Tout d'abord, vous aurez envie de faire un peu de type de l'auto-complétion de contrôleur. Il devrait prendre une corde et le retour de tous les possibles automatique complète termes de cette chaîne.

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

Puis, découvrez la UIMenuController classe. C'est la classe qui montre le couper/copier/coller des options dans de nombreuses applications. Vous pouvez obtenir de l'instance partagée de ce, remplir les éléments de ce menu vous-même, et de l'afficher au-dessus du champ de texte. L'utilisateur peut ensuite, il suffit de taper le terme qu'ils veulent.

En fin de compte, la solution a vraiment bien travaillé pour nos besoins. J'espère que cela fonctionne pour vous.

7voto

micpringle Points 4097

Consultez ce didacticiel de Ray Wenderlich qui montre une façon d'obtenir une saisie semi-automatique personnalisée

6voto

jonsibley Points 1916

Alternativement, vous pouvez utiliser cette sous-classe UITextField (inspiré par DOAutocompleteTextField):

https://github.com/hoteltonight/HTAutocompleteTextField

Il y a un peu plus de fonctionnalités et est activement développé. L'exemple montre comment utiliser un tableau comme source de données pour la autosuggest texte. Il prend la même approche que DOAutocompleteTextField, en ce qu'il montre le suggère l'achèvement de texte "fantômes" dans le champ de texte que l'utilisateur tape.

2voto

DenVog Points 1588

Avez-vous étudié UISearchDisplayController ? Il y a quelques discussions ici sur Stack Overflow , y compris les références Core Data si c'est ce que vous utilisez. Aussi quelques méthodes alternatives , ailleurs.

2voto

Robert Points 2597

Avec l'aide du tutoriel Ray Wenderlich susmentionné, je viens d'implémenter une version de ceci pour filtrer les noms dans un UITableView existant.

J'ai défini le délégué de mon champ de texte comme mon contrôleur de vue, mon contrôleur de vue comme UITextFieldDelegate et mis en œuvre ces deux méthodes:

 - (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];
}
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X