0

アプリにオートコンプリートメソッドを実装しようとしています。タイプ文字を入力すると、最初の文字に一致する単語が返されます。たとえば、「B」または「ba」と入力すると、「Ballon」や「Ball」のように「ba」で始まる文字列が返されます。しかし、私の配列には、「(」または「スペース」で区切られた複数の単語を含む文字列があります。例「ホワイトボール」または「ジャイアント(ビッグ)」。これらの文字列も取得する必要があります。ヘルプ高く評価されます。

これが私が使用しているコードです、

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    autocompleteTableView.hidden = NO;

    NSString *substring = [NSString stringWithString:textField.text];
    substring = [substring stringByReplacingCharactersInRange:range withString:string];
    [self searchAutocompleteEntriesWithSubstring:substring];
    return YES;
}

- (void)searchAutocompleteEntriesWithSubstring:(NSString *)substring {

    [autocompleteList removeAllObjects];
    for(NSString *curString in contentArray)
    {
        NSRange substringRange = [curString rangeOfString:substring options:NSCaseInsensitiveSearch];

        if (substringRange.location == 0)
        {
            [autocompleteList addObject:curString];
        }
    }
    [autocompleteTableView reloadData];
}

ありがとう

4

1 に答える 1

0

問題はあなたのif条件の中にあります

    if (substringRange.location == 0)
    {
        [autocompleteList addObject:curString];
    }

場所0をチェックしているため、サブ文字列で始まる文字列のみが返されます。次のように条件を変更すると、問題を解決するのに役立ちます。

   if (substringRange.location != NSNotfound)
   {
       [autocompleteList addObject:curString];
   }
于 2012-08-02T06:39:20.193 に答える