【问题标题】:Delete a word of attributedtext on textview在textview上删除一个attributetext的单词
【发布时间】:2015-03-03 01:18:37
【问题描述】:

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

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

我正在尝试检测用户的变化

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

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

感谢您的帮助。

【问题讨论】:

    标签: ios objective-c uitextview


    【解决方案1】:

    也许您正在寻找类似的东西?

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

    }

    【讨论】:

    • replaceCharactersInRange 并将文本重新分配回 textview 正是我需要使用的,但我需要使用属性字符串而不是使用可变字符串。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-09
    • 1970-01-01
    • 1970-01-01
    • 2020-11-13
    相关资源
    最近更新 更多