У меня есть приложение для iPhone. Представление состоит из двух дочерних элементов: представление таблицы высотой 400 пикселей и представление uitext в нижней части представления высотой около 80 пикселей.
Я пытаюсь переместить текстовое представление и табличное представление вверх, когда клавиатура видна. Я изменил «основной» вид, чтобы сделать его меньше. Почему его дети, кажется, не меняют размеры?
Нужно ли перенастраивать рамку просмотра таблицы, а также перенастраивать рамку просмотра текста? Мне просто интересно, каково ожидаемое поведение. Нужно ли использовать setNeedsLayout () или setNeedsDisplay?
Я ожидал, что из-за уменьшения "основного" представления его потомки будут "сжаты" и также будут ограничены родительским представлением. Похоже, текстовый вид остается в нижней части экрана. Представление таблицы выглядит правильным (сокращено), но текстовое представление не выглядит так, как будто оно движется. Хотя в новом сокращенном виде теперь есть белая область, в которую текстовое представление должно перейти.
// Called when the UIKeyboardDidShowNotification is sent.
- (void) клавиатураWasShown: (NSNotification *) aNotification {
NSLog(@"keyboard was shown");
NSDictionary* info = [aNotification userInfo];
CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
//CGRect keyboardFrame = [[info objectForKey:UIKeyboardFrameEndUserInfoKey]CGRectValue];
NSLog(@"kb size is:%f",kbSize.height);
//UIEdgeInsets contentInsets = UIEdgeInsetsMake(0.0, 0.0, kbSize.height, 0.0);
CGRect newFrame = self.view.frame;
//20 status bar height, 44 is nav bar height
newFrame.size.height = 480 -20 - 44 - kbSize.height;
self.view.frame = newFrame;
self.view.layer.borderWidth = 1.0f;
self.view.layer.borderColor = [[UIColor redColor] CGColor];
[self.view setNeedsLayout];
[self.view setNeedsDisplay];
}