2015-03-03 2 views
0

Я реализую что-то вроде упоминания facebook. Пользователь может ввести текстовое сообщение в текстовое окно и указать имена пользователей. Имя пользователя будет выделено с помощью NSAttributedString.Удалить слово атрибута текста в текстовом виде

Когда пользователь хочет удалить текст в текстовом виде, я хочу удалить имя упоминания в целом, если текст является частью имени упоминания. Он не должен влиять на другие текстовые и другие имена имен в текстовом виде.

Я пытаюсь обнаружить изменение пользователя в

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

Но я не могу найти способ, чтобы определить attributedstring текущего replacementText и удалить его без изменения других частей текста.

Спасибо за помощь.

ответ

0

Возможно, вы ищете что-то вроде этого?

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

    return [self removeUsernameText:textField.text withUsername:@"#John"]; 

} 

- (BOOL)removeUsernameText:(NSString *)text withUsername:(NSString *)username{ 

    if([text containsString:username]){ 

     NSMutableString *string = [[NSMutableString alloc] init]; 

     [string replaceCharactersInRange:[text rangeOfString:username] withString:@""]; 

     _textField.text = string; 

     return YES; 

    }else{ 

     return NO; 
    } 

}

+0

replaceCharactersInRange и переназначить текст обратно в TextView именно то, что мне нужно использовать, но вместо того, чтобы использовать изменяемую строку нужно использовать attributedString. Спасибо. – user2855938

Смежные вопросы