在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;
}
}
我正在实施类似 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;
}
}