sizeWithFont:constrainedToSize: не считается "\n" в NSString

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
    NSString *substring = textView.text;
    substring = (text.length == 0 && range.length == 1) ?
    [substring substringToIndex: substring.length-1] : [substring stringByAppendingString: text];

    CGSize size = [substring sizeWithFont:textView.font
                        constrainedToSize:CGSizeMake(textView.frame.size.width, 200.0)];

    CGFloat height = MAX(size.height, firstHeight);

    if(height != lastHeight)
    {
        CGFloat y = height - lastHeight;
        CHANGE_HEIGHT(textView, height);
        lastHeight = height;
    }   
    return YES;
}

Проблема в том, что sizeWithFont:constrainedToSize: дает мне неправильный рост. Например, если текст " Hello \n " sizeWithFont не будет считать " \n ", так что " Привет " и " Hello \n " Тексты находятся на одной высоте.

Будем благодарны за любую необходимую помощь!

1 ответ

Не связано, но как вы получаете свой substring игнорирует диапазон, где текст изменен.

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
    NSString *textToMeasure = [textView.text stringByReplacingCharactersInRange:range withString:text];
    if ([textToMeasure hasSuffix:@"\n"]) {
        textToMeasure = [NSString stringWithFormat:@"%@-", textView.text];
    ...
}
Другие вопросы по тегам