题 UITextField自动完成 - iPhone SDK


我想弄清楚是否有办法在a中实现自动完成功能 UITextField 具体的价值观。

我知道的 UITextField 可以使用iPhone字典(就像在Safari中搜索谷歌等),但我希望能够以编程方式将其更正为我指定的某些值。

有谁知道有任何方法可以做到这一点?

非常感谢, 布雷特


30
2017-07-07 19:58


起源


您也可以查看此链接: stackoverflow.com/questions/14384638/autocomplete-uitextfield/... - NeverHopeless


答案:


布雷特

在处理最近的一个相当大的项目时,我做了一些非常类似的事情。我们有一个不断变化的自动完成条款列表,并围绕它们构建了一个自动完成。

首先,您需要制作某种类型的自动完成控制器。它应该采用一个字符串并返回该字符串的所有可能的自动完成术语。

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

然后,查看UIMenuController类。它是在许多应用程序中显示剪切/复制/粘贴选项的类。您可以获取它的共享实例,自己填充菜单项,并将其显示在文本字段上方。然后,用户可以简单地点击他们想要的术语。

最后,该解决方案非常适合我们的需求。我希望这个对你有用。


12
2018-06-28 18:39





查看 本教程 来自Ray Wenderlich,演示了一种实现自定义自动完成的方法


7
2018-06-24 14:17



请注意,不建议使用仅链接答案,因此,答案应该是搜索解决方案的终点(相对于引用的另一个中途停留,随着时间的推移会逐渐变得陈旧)。请考虑在此处添加独立的概要,并将链接作为参考。 - ᴳᵁᴵᴰᴼ
这不是一个真正的自动完成,而是一个搜索教程...... - Mike M
本教程有效。只是看你的 UITextView 与 UITextField。一个警告是,由于某种原因,我的一个自动完成选项以某种方式被掩盖或其他东西。如果你搞清楚了,请告诉我。 - craned


或者,您可以使用此UITextField子类(受DOAutocompleteTextField启发):

https://github.com/hoteltonight/HTAutocompleteTextField

它还有一些功能,并且正在积极开发中。该示例显示如何使用数组作为autosuggest文本的数据源。它采用与DOAutocompleteTextField相同的方法,因为它在用户输入时在文本字段中显示建议的完成文本“ghosted”。


6
2018-01-25 20:22





你看过了吗? UISearchDisplayController?有几个 Stack Overflow上的线程,如果您正在使用的话,包括核心数据引用。还有一些 替代方法,别的。


2
2018-06-23 21:19





在前面提到的Ray Wenderlich教程的帮助下,我刚刚实现了一个版本来过滤现有的名称 UITableView

我将我的文本字段的委托设置为我的视图控制器,我的视图控制器设置为 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];
}

2
2018-01-22 12:30





使用此委托方法。您可以替换指定的值。

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

1
2018-06-28 11:01





刚刚面对这个线程,因为我需要类似的东西。如何使用UITextfieldDelegate的方法实现自己的搜索:

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

您可能知道每个UITextfield的输入都会调用此方法。


1
2018-04-26 18:57