在textview上删除attributedtext的一个词

Delete a word of attributedtext on textview

我正在实施类似 facebook 提及的功能。用户可以在文本视图中键入他们的文本消息并提及用户名。用户名将使用 NSAttributedString 高亮显示。

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

我正在尝试检测

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

但我似乎无法找到一种方法来确定当前 replacementText 的属性字符串并将其删除而不更改文本的其他部分。

感谢您的帮助。

也许您正在寻找这样的东西?

- (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;
    }

}