我正在实施类似facebook提及的内容。用户可以在textview中键入文本消息并提及用户名。用户名将使用NSAttributedString突出显示。
当用户想要删除textview上的文本时,如果文本是提及名称的一部分,我想删除整个提及名称。它不应该影响textview上的其他文本和其他提及名称。
我正在尝试检测
中的用户更改- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
但我似乎无法找到确定当前replacementText的attributesstring的方法并删除它而不更改文本的其他部分。
感谢您的帮助。
答案 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;
}
}