Заменить данную строку на другую в UITextView - PullRequest
2 голосов
/ 12 октября 2011

В моем приложении мне нужно сделать следующее: когда символ набирается в TextView для сохранения в строке NSString и после этого для замены на '*'. Я попробовал это:

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
    NSLog(@"typing...");
    text=@"*";
    passwordText=textView.text;
    NSLog(@"password %@",passwordText);

    NSString* nextText = [textView.text stringByReplacingCharactersInRange:range withString:text];
    textView.text=nextText;
    NSLog(@"next %@",nextText);
    NSLog(@"textview.text %@",textView.text);

    return YES;
}

, где passwordText - это NSString, в котором я хочу сохранить вводимый текст с клавиатуры на UITextView.

Результат таков: http://i54.tinypic.com/2cx9ueo.png (здесь я представил «мы» и вижу это: «* w * e». Может кто-нибудь помочь мне решить эту проблему?

Я упоминаю, что должен сделать это, используя UITextView, а не UITextField.

Ответы [ 3 ]

2 голосов
/ 12 октября 2011

Я могу сказать вам, почему вы получаете символ вместе с *, хотя я не уверен, стоит ли ваш подход проходить через это.

сделайте ваше возвращаемое утверждение как НЕТ, это отменит новый ключнажат.В настоящее время YES помещает этот символ рядом с вашим программным символом '*'.

1 голос
/ 12 октября 2011

Просто верните NO в методе, если вы хотите, чтобы изменение было немедленным.Если вы хотите, чтобы это немного задерживалось (то есть сначала покажите символ, затем замените его на *, как в полях пароля), верните YES и запустите другой метод из

textView: shouldChangeTextInRange: replaceText: метод для запускачерез 0,5 секунды (или другое число, если хотите) с помощью таймера.

Этот новый метод может заменить последний добавленный символ или измененный символ на *.

0 голосов
/ 12 октября 2011

Посмотрите на этот ответ на аналогичный вопрос.Я уверен, что вы можете изменить его под свои нужды.

...