最多10行,每行14个字符以及UITextView中的退格

时间:2016-10-27 05:11:07

标签: ios objective-c uitextfield uitextview

我正在尝试在每行中包含14个字符的textview,并允许用户输入10个这样的行。第15个字符是每行中的新行字符。当用户尝试在现有行文本之间编辑文本时,会出现问题。新添加的文本出现在整个文本的末尾。这是因为我在第14个字符后添加换行符,当用户开始键入时,由于哪个光标在结尾处而文本被添加到那里。我设法通过设置光标位置来解决这个问题,但是当文本转到新行时,字符正在改变它们的位置。退格也因此而产生问题。将获得任何帮助!!!

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

if ([text isEqualToString:@"\n"]) {
    return NO;
}

NSMutableString *fullstring = [[textView.text stringByReplacingCharactersInRange:range withString:text] mutableCopy];

NSInteger intCharcount = fullstring.length - range.length + text.length;

const char * _char = [text cStringUsingEncoding:NSUTF8StringEncoding];
int isBackSpace = strcmp(_char, "\b");

if (isBackSpace == -8) {
}
else{

    textView.text = [textView.text stringByReplacingOccurrencesOfString:@"\n" withString:@""];

    for (i=0; i<intCharcount; i++) {

        if (i>0 && i%15 == 0) {
            NSMutableString *fullstring = [textView.text mutableCopy];
            [fullstring insertString:@"\n" atIndex:i-1];
            textView.text = fullstring;
        }
        else{
            textView.selectedRange = NSMakeRange(range.location, 0);
        }
    }

    if (intCharcount >= 151) {
        return NO;
    }
}

return YES;

}

0 个答案:

没有答案