1

次のコードを使用すると、UITextfieldに入力された値を、以前に追加された文字列オブジェクトの配列と比較してUITableviewに表示することにより、自動的に提案できます。これは問題なく機能しますが、1つの単語に対してのみです。

では、ユーザーがコンマを入力してからもう一度入力を開始した後、同じ文字列配列でコンマの後に入力した文字の候補をもう一度検索できるように、コードを変更できますか?

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

if (textField.tag == tagTextFieldTag)    //The text field where user types
{
    textField.autocorrectionType = UITextAutocorrectionTypeNo;
    autocompleteTableView.hidden = NO;   //The table which displays the autosuggest

        NSString *substring = [NSString stringWithString:textField.text];

        substring = [substring stringByReplacingCharactersInRange:range withString:string]; 

if ([substring isEqualToString:@""]) 
    {
        autocompleteTableView.hidden = YES; //hide the autosuggest table if textfield is empty
    }
        [self searchAutocompleteEntriesWithSubstring:substring];  //The method that compares the typed values with the pre-loaded string array

    }


return YES;
}

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

[autoCompleteTags removeAllObjects];

for(Tag *tag3 in tagListArray)   //tagListArray contains the array of strings

 //tag3 is an object of Tag class, which has a single attribute called 'text'

{
    NSString *currentString = tag3.text;
    NSRange substringRange = [currentString rangeOfString:substring];
    if(substringRange.location ==0)
    {
        [autoCompleteTags addObject:currentString];
    }
}

[autocompleteTableView reloadData];
}
4

1 に答える 1

5

あなたはこのようにそれを行うことができます、

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

  if (textField.tag == tagTextFieldTag)    //The text field where user types
  {
    textField.autocorrectionType = UITextAutocorrectionTypeNo;
    autocompleteTableView.hidden = NO;   //The table which displays the autosuggest
    NSArray *autoComplete = [textField.text componentsSeparatedByString:@","];
    NSString *substring = [NSString stringWithString:[autoComplete lastObject]];
   if ([substring isEqualToString:@""]) 
    {
        autocompleteTableView.hidden = YES; //hide the autosuggest table if textfield is empty
    }
        [self searchAutocompleteEntriesWithSubstring:substring];

    }

 return YES;
}

この方法は次のように機能します。

  • componentsSeparatedByStringtextFieldsテキストを区切り、次のように指定しますNSArray
  • lastObjectその配列から最後のオブジェクトを取得します。@ ""の場合、それ以外の場合は一致する要素を検索しません。

これがお役に立てば幸いです。

于 2012-07-11T12:49:51.010 に答える