UITextview получает дополнительную строку, когда он не должен

Интересно, есть ли кто-нибудь, кто может пролить свет на то, что происходит в моем приложении. Я создал многострочное текстовое поле, используя UITextView. Когда представление загружается, оно представляет собой однострочное текстовое поле, и по мере того, как пользователь печатает свое сообщение, я увеличиваю размер соответственно. Довольно много, как работает приложение SMS.

Проблема в том, что он делает что-то довольно прикольное при добавлении новых строк. Что происходит, когда вы добираетесь до конца строки, когда предполагается добавить новую строку, кажется, что вы добавляете 2 новые строки, и как только вы вводите другой символ, вторая дополнительная строка исчезает, и у меня остается только 1 новая дополнительная строка. линия.

Я вывел свои значения на консоль при добавлении каждой буквы. Все значения верны, даже когда добавлена ​​2-я дополнительная строка, математически и с точки зрения кода значение высоты текстового представления одинаково с и без этой 2-й строки для 1 символа. (Те же результаты случаются при использовании отладчика для проверки различных значений)

Я поместил свою функцию ниже, чтобы вы, код-гроб, бросили свой взгляд и сказали мне, что я делаю неправильно.

-(void) keyPressed: (NSNotification*) notification{
    // check if there is text in the text box
    if (chatTextView.hasText)
    {
        chatTextButton.enabled = YES;
        CGSize expectedSize = [[[notification object]text] sizeWithFont:[UIFont systemFontOfSize:14] constrainedToSize:CGSizeMake(210,9999) lineBreakMode:UILineBreakModeWordWrap];
        NSInteger expectedHeight = expectedSize.height;

        if (expectedHeight < 30)
        {
            [chatTextView scrollRectToVisible:CGRectMake(0,0,1,1) animated:NO];
        }

        
           if (expectedHeight >= 30 && expectedHeight <= 126)
        {

            //text view resizing
            CGRect frameTextView = chatTextView.frame;
            NSInteger frameTextW = frameTextView.size.width;
            frameTextView.size.height = expectedHeight + 12;
            chatTextView.frame = frameTextView;

            //chat view resizing
            CGRect frameChat = chatTextBoxView.frame;
            NSInteger frameChatH = frameChat.size.height;
            NSInteger frameChatY = frameChat.origin.y;
            frameChat.origin.y = 202 - (expectedHeight + 27);
            frameChat.size.height = (expectedHeight + 12);
            chatTextBoxView.frame = frameChat;

            //main view resizing
            CGRect frameMain = self.view.frame;
            NSInteger frameMainH = frameMain.size.height;
            frameMain.size.height = 247 - (expectedHeight + 27);
            self.view.frame = frameMain;

            NSLog(@"==== EXPECTED  HEIGHT %d =====",expectedHeight);
            NSLog(@"==== CHAT TEXT WIDTH  %d =====",frameTextW);
            NSLog(@"==== CHAT VIEW HEIGHT %d =====",frameChatH);
            NSLog(@"==== CHAT VIEW LOCATY %d =====",frameChatY);
            NSLog(@"==== MAIN VIEW HEIGHT %d =====",frameMainH);
            NSLog(@"==============================");

            [chatTextView scrollRectToVisible:CGRectMake(0,0,1,1) animated:NO];
        }
        if (expectedHeight > 126)
        {
            chatTextView.scrollEnabled = YES;
        }
    }

    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationBeginsFromCurrentState:YES];
    [UIView setAnimationDuration:0.3f];
    [UIView commitAnimations];

    [self scrollThread];
}

Если кто-нибудь может помочь, пожалуйста, у меня не так много волос. Спасибо заранее.

0 ответов

Другие вопросы по тегам