Табличное представление в контроллере представления содержимого всплывающего окна не изменяет размер должным образом

Предыстория: у меня есть контроллер представления, который имеет представление заголовка(UIView), представление нижнего колонтитула (UIView), представление таблицы и панель поиска(UISearchBar) над ним. Это делается с помощью xib. Мне нужно представить это внутри всплывающего окна. Это сделано, и все работает нормально.

Проблема: Проблема начинается, когда я запускаю клавиатуру для поиска. Клавиатура уменьшает размер всплывающего окна. Из-за этого я не вижу нижние ячейки моей таблицы. Понятия не имею почему. Я предполагаю, что его размер не изменяется должным образом.

Что я пробовал: я пытался уменьшить высоту таблицы с помощью уведомлений с клавиатуры. Это работает, но я хочу более элегантное решение, а также хочу понять, что я делаю неправильно?

Это специфично для iOS 6.0. С 7.0 работает нормально

EDIT При дальнейшем тестировании я обнаружил, что мое решение не работает :(

Любая помощь высоко ценится. Спасибо

Посмотреть схему xib контроллера: введите здесь описание изображения


person Prathamesh Saraf    schedule 10.01.2014    source источник
comment
Вы используете ограничения? Вы пытались установить controller.view.autoResizingMask = UIViewAutoResizingFlexibleHeight и tableView.autoResizingMask = UIViewAutoResizingFlexibleHeight и сделать верхний и нижний колонтитулы верхним и нижним колонтитулами tableView?   -  person George Green    schedule 10.01.2014
comment
@GeorgeGreen: Да... маски автоматического изменения размера устанавливаются в xib. Я забыл упомянуть... нет, я не использую ограничения.   -  person Prathamesh Saraf    schedule 10.01.2014
comment
В вашем вопросе, когда вы говорите об этом, вы имеете в виду подвиды своего представления, верно? У вас есть стандартный UITableView или подкласс? Определенно ли автоматическое изменение размера установлено для всех представлений в иерархии? Не могли бы вы вставить часть своего кода/скриншот IB?   -  person George Green    schedule 10.01.2014
comment
@GeorgeGreen: Привет, Джордж. я проверил, что мои маски автоматического изменения размера установлены для всех представлений. Я не могу загрузить снимок экрана, так как он был разработан с использованием определенных каркасов. Однако я приложу схему xib, чтобы помочь в понимании. Спасибо за ваше время.   -  person Prathamesh Saraf    schedule 10.01.2014
comment
Можете ли вы убедиться, что viewWillLayoutSubviews вызывается на вашем контроллере?   -  person George Green    schedule 10.01.2014
comment
ага называется..   -  person Prathamesh Saraf    schedule 10.01.2014
comment
Хммм... Хорошо, я посмотрю как следует, когда вернусь домой позже!   -  person George Green    schedule 10.01.2014


Ответы (1)


Убедитесь, что вы установили желаемый размер вашего контроллера представления во всплывающем окне. Это делается двумя способами: вы можете переопределить метод contentSizeForViewInPopover в контроллере представления, который вы отображаете во всплывающем окне, например так:

- (CGSize)contentSizeForViewInPopover
{
    // return the size WITHOUT a navigationbar height
    return CGSizeMake(320, 300);
}

И/или вы можете установить свойство во всплывающем окне, например:

// if your inner viewcontroller is a UINavigationViewController, return the size WITH the   
// navbar height
self.popover.popoverContentSize = CGSizeMake(320, 344);

Обратите внимание на комментарии.

person Johannes Fahrenkrug    schedule 10.01.2014
comment
я устанавливаю contentSizeForViewInPopover в viewdidload контроллера представления :( - person Prathamesh Saraf; 13.01.2014
comment
@PrathameshSaraf Думаю, уже слишком поздно. Попробуйте переопределить метод и посмотрите, работает ли он. - person Johannes Fahrenkrug; 13.01.2014