Если у вас все еще есть проблемы, попробуйте это без необходимости в scrollView.
Поработав с примером DBD некоторое время, я обнаружил, что frame и contentSize, похоже, не в состояниибыть установленными вместе как:
self.tableView.contentSize = CGSizeMake(320, scrollHeight);
self.tableView.frame = CGRectMake(self.tableView.frame.origin.x,44,self.tableView.contentSize.width,self.tableView.contentSize.height);
Попытка состояла в том, чтобы установить максимальную высоту кадра, но сохранить возможность прокрутки всего содержимого, если было большое количество ячеек.Кажется, этот хак работает хорошо, и при необходимости его можно изменить, добавив больше условий:
int cellCount = [YOURARRAY count];
CGFloat scrollHeight = cellCount*44+44;//for a cell with height of 44 and adding 44 if you have a toolbar at the bottom
self.tableView.contentSize = CGSizeMake(320, scrollHeight);//you can change the width and or let the .xib control the autoresizing
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad && cellCount < 14)
{
//here's were you can add more conditions if you're in landscape or portrait, but this handles 14 cells with a heightForHeaderInSection of 46 in landscape
self.tableView.frame = CGRectMake(self.tableView.frame.origin.x,44,self.tableView.contentSize.width,scrollHeight);
}
else if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone && cellCount < 7)
{
//same as above but it's for the iPhone in portrait
self.tableView.frame = CGRectMake(self.tableView.frame.origin.x,44,self.tableView.contentSize.width,scrollHeight);
}
Это работает наверняка.Возможно, вам придется настроить autoresizingMask внутри вашего .xib или в вашем коде, но этот взлом - единственное найденное мной решение, которое заботится обо всех переменных в моем случае.