-1

定義済みUItextfieldの文字列に基づいて値を自動補完する があります。複数の単語が最初の stringcurrentStringにある場合、結果の表示には最後の char がcurrentString追加されます。

したがって、サンプルコードでは

と入力するNoと、UITextField結果のテキストはNote todayt(文字列に追加された 2 番目の単語の最後の文字) になります。

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

NSString *currentString = [_txt.text stringByReplacingCharactersInRange:range withString:string];


 NSString *currentString = [_txt.text stringByReplacingCharactersInRange:range withString:string];
if ([currentString isEqualToString:@"No t"]) {
    textField.text = @"Note today";

この動作を回避する方法はありますか?

私が試してみました

 if(_txt.text.length>1)
    {
       _txt.text =[textField.text substringToIndex:[textField.text length] - 1];

    }

if(_txt.text.length>1)
    {
        NSString *text2;

        NSString *currentString = textField.text;
        NSString *newString = [text2 substringToIndex:[text2 length]-1];
        textField.text=newString;
    }

    return NO;
}
return YES;

}
4

2 に答える 2

2

「t」が入力される原因となる YES を返すことは間違いありません。

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range  replacementString:(NSString *)string {
  NSString *currentString = [_txt.text stringByReplacingCharactersInRange:range withString:string];

  if ([currentString isEqualToString:@"No t"]) {
    textField.text = @"Note today";
    return NO;
  }

  return YES;
}
于 2013-01-19T01:37:32.117 に答える
0

これをソートしました。余分な文字を削除するifステートメントを追加しました

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

NSString *currentString = [_txt.text stringByReplacingCharactersInRange:range  withString:string];


NSString *currentString = [_txt.text stringByReplacingCharactersInRange:range withString:string];
if ([currentString isEqualToString:@"No t"]) {
textField.text = @"Note today";

  }


 if(_txt.text.length>=4)

  {
        NSString *text;

        text =[[textField text] stringByAppendingString:string];
        NSString *newString = [text substringToIndex:[text length]-1];

        textField.text=newString;


    return NO;

   }
   return YES;
}
于 2013-01-19T10:57:18.567 に答える