在textview上删除attributestext的单词

时间:2015-03-03 01:18:38

标签: ios objective-c uitextview

我正在实施类似facebook提及的内容。用户可以在textview中键入文本消息并提及用户名。用户名将使用NSAttributedString突出显示。

当用户想要删除textview上的文本时,如果文本是提及名称的一部分,我想删除整个提及名称。它不应该影响textview上的其他文本和其他提及名称。

我正在尝试检测

中的用户更改
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text

但我似乎无法找到确定当前replacementText的attributesstring的方法并删除它而不更改文本的其他部分。

感谢您的帮助。

1 个答案:

答案 0 :(得分: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;
    }

}