3

UITextViewユーザーが入力したときに動的にタグ付けできるを作成しました@

@自分が作成した特定のタグ付けプロセスを停止するために、削除された を検出することはできますか? もしそうなら、どうすればそれを行うことができますか? UITextViewそのようなデリゲート メソッドはありません。

4

2 に答える 2

1

私は使うだろう

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text

次に、NSStringに追加された最後の文字を格納する を作成しますUITextView。上記のメソッド内に、次のスニペットを追加します。

if ([text isEqualToString:@""] && [lastRecordedString isEqualToString@"@"]) {
  //do whatever you want to do when an @ is deleted
}

lastRecordedString = [textView.text substringFromIndex:[string length]-1];

編集: 上記の編集されたコードを参照してください。現在は、文字が削除されlastRecordedStringた後の最後の文字です。UITextViewこれはうまくいくはずです。

于 2012-08-22T03:05:28.423 に答える
1

使用によって置き換えられる元のテキストを取得できます。

NSString *originalText = [textView.text substringWithRange:range];

あなたの

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text

方法。

次に、する

if ([originalText rangeOfString:@"tag"].length > 0) {
    NSLog(@"delete tag string");
}

ユーザーが特定の文字列を削除したかどうかを検出します。

お役に立てば幸いです。

于 2012-11-04T15:52:24.657 に答える