在UITextView中连续退格许多字符

Alb*_*haw 2 iphone xcode objective-c uitextviewdelegate ios

我想检查一个用户是否在textView中对一个字符进行退格,如果有任何相同的字符连接它以便将它们全部删除...

例如,如果我正在检查的字符是"e",我有文本"easy heeeeeello",并且用户开始按退格键,它将变为:

容易heeeeeello - >容易heeeeeell - >容易heeeeeel - >容易heeeeee - >容易h

代码应该检测到按下退格键.然后它会检测哪些文本将被删除,如果该文本是一个字符(在我们的例子中是"e"),它将检查是否有更多的"e"触及"e"创建一条"e" s并删除所有.

你能帮助我吗?

Dhr*_*oel 5

好的,所以我写了这段代码,它对我有用

-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
    if([text isEqualToString:@""]) {
    //Detected backspace character as the new character is @"" meaning something will be deleted

        char toDelete = [textView.text characterAtIndex:range.location];

        int duplicateCharCount = 0;
        for(int i =range.location-1; i>=0; i--) {

            if([textView.text characterAtIndex:i] == toDelete) {
                duplicateCharCount++;
            } else {
                break;
            }  
        }

        NSRange newRange = NSMakeRange(0, range.location - duplicateCharCount);
        [textView setText:[textView.text substringWithRange:newRange]];

        return NO;
    } else {
        return YES;
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道它不是最好的实现,但现在你知道如何继续

希望这可以帮助