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];
}
Если кто-нибудь может помочь, пожалуйста, у меня не так много волос. Спасибо заранее.