2014-01-29 1 views
0

Я искал далеко и широко для решения этой проблемы, но безрезультатно.При анимации высоты UITableview распознаватель жестов прокрутки остается того же размера

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

код я использую, чтобы оживить TableView выглядит следующим образом:

[UIView animateWithDuration:0.3 animations:^{ 
      self.view.frame = extendedFrame;  
      self.tbl_body.frame = extendedFrame;     
     }]; 

Спасибо заранее!

+0

Что именно представляет собой вид, который вы изменяете здесь? Сам 'UITableView' (так что это подкласс) или представление, содержащее' UITableView'? Я спрашиваю об этом, потому что не очевидно, что ваша таблица фактически изменяет размер, и если у вас нет большого количества ячеек, вы можете даже этого не заметить. Только для теста цвет фона таблицы отличается от цвета его контейнера. –

+0

Извините, моя ошибка, я оставил самую важную часть LOL. Я расширяю рамку представления, а также представление таблицы, которое является дополнительным представлением. –

+0

Если tbl_body (представление таблицы) находится внутри представления (self.view), а кадр не имеет происхождения (0,0), тогда таблица будет иметь смещение (для x и y источника). В конце таблицы фрейм должен быть равен границам его контейнеров ...). Также сделайте тест (NSLog), какими будут фреймы на самом деле после анимации - если вы используете функции автозапуска, может оказаться сложным при использовании фреймов. Вы проводили различные тесты цвета? –

ответ

1

Хорошо, поэтому я, наконец, решил это, но все еще не совсем понимаю проблему.

Единственный способ, которым я мог это исправить, - установить рамку на расширенный кадр на инициализацию, а затем изменить ее размер до минимизированного кадра. Только тогда, когда он расширяется, распознаватель жеста имеет правильный размер.

Я знаю, что не совершенен, но мне пришлось идти с этим из-за отсутствия лучшего решения.

0

Это выстрел в темноте, но ... вы пробовали использовать блок завершения для перезагрузки данных?

[UIView animateWithDuration:0.3 animations:^{ 
     self.tbl_body.frame = extendedFrame;     
    }completion:^(BOOL finished){ 
     [self.tbl_body reloadData]; 
}]; 
+0

Жаль, что тестовый сервер в данный момент не работает, проверит это, как только он вернется вверх –

+0

Я тестировал это и, к сожалению, это не работал для меня –

Смежные вопросы