Вот как воспроизвести это странное поведение в Xcode 4.2.1:
(1) Создайте новое приложение iPad для iOS 5 с помощью встроенного шаблона Master-Detail. Убедитесь, что установлены флажки «Использование ARC» и «Использовать раскадровку».
(2) В вашей раскадровке добавьте UITextView к UIView в вашем детализированном контроллере, прямо под меткой, которая гласит: «Подробное представление содержимого идет сюда».
(3) Также в вашей раскадровке выберите UITableView мастера и в инспекторе атрибутов установите для содержимого значение «Динамические прототипы».
(4) Снова в вашей раскадровке выберите ячейку прототипа UITableview Мастера, а в Инспекторе атрибутов установите для стиля значение «Базовый», а для идентификатора - «CellIdentifier».
(5) Для реализации Master View Controller (MasterViewController.m) добавьте этот код:
// show only one section in the master table view
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
// show 30 rows in the master table view
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return 30;
}
// when showing a cell, include it's indexPath row in its title text
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
// dequeue cell
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CellIdentifier"];
// set text
cell.textLabel.text = [NSString stringWithFormat:@"Row at Index %i", indexPath.row];
// return cell
return cell;
}
(6a) Запустите приложение. Откройте его в книжной ориентации и щелкните внутри текстового поля (UITextView), которое вы создали в подробном представлении. Клавиатура откроется. Теперь поверните устройство влево в альбомную ориентацию.
(6b) Если вы прокрутите мастер-вид при открытой клавиатуре, вы увидите, что мастер-вид позволяет вам прокручивать за нижний ряд (см. Скриншот ниже). Это связано с тем, что устройство автоматически устанавливает значение UITableView Bottom ContentInset в Master -608. При закрытии клавиатуры это исчезнет.
Скриншот:
Последнее замечание: если вы регистрируетесь для уведомлений о повороте устройства в приложении и устанавливаете для вставок содержимого значение UIEdgeInsetsZero после поворота устройства, оно все равно не будет работать: сразу после поворота устройства система по-прежнему имеет нижнюю вставку 0 ; -608 загадочно устанавливается после этого.