2012-03-20 2 views
2

Я следил за this post, чтобы заголовок моего заголовка не отображался вне поля зрения при прокрутке таблицы. Однако при прокрутке вверх, заголовок не возвращается в поле зрения. Когда-либо. Учитывая, что я точно следил за решением (и я не устанавливаю ContentInset в другом месте), я совершенно недоумеваю. Может кто-то указать мне верное направление? Вот мой код:Прокрутка заголовка секции UITableView

- (void)scrollViewDidScroll:(UIScrollView *)scrollView { 
    CGPoint p = scrollView.contentOffset; 

    CGFloat height = [self tableView:self.agendaDetailTable heightForHeaderInSection:0]; 

    if (p.y <= height && p.y > 0) { 
    self.agendaDetailTable.contentInset = UIEdgeInsetsMake(-p.y, 0, 0, 0); 
    } else if (p.y >= height) { 
    self.agendaDetailTable.contentInset = UIEdgeInsetsMake(-height, 0, 0, 0); 
    } 
} 
+0

Фрагмент работает отлично для меня как для самолета, так и для сгруппированного стола. Попытайтесь записать свои 'p.y' и' height'. –

+0

Заголовок в первом разделе возвращается вам для просмотра с этим кодом? Шахта останавливается сразу же за заголовком, видимая вся видимая ячейка первого вида. Я зарегистрировал значения p.y и height. Высота остается 134, а py находится в диапазоне от 0 до максимального значения contentOffset, но при прокрутке назад вверх она останавливается на отметке 134. – Jacob

+0

Кроме того, когда я прокручиваю вниз, а вид заголовка частично за кадром, я не могу вернуться назад наверх, если это вообще помогает. – Jacob

ответ

4

Включить bounces и alwaysBounceVertical для таблицы, чтобы позволить ему прокручивать через край содержимого и переписать смещение в то время, что происходит.

1

Решение Jacob работает хорошо. Одна из проблем заключается в том, что содержимое отключено на один пиксель после прокрутки. У меня заголовок с черной рамкой и я вижу проблему после прокрутки, а затем вернусь к вершине. Изменяя p.y> 0 на p.y> = 0, мой заголовок при прокрутке назад к нулю восстанавливается должным образом.

/* to fix floating headers */ 
- (void)scrollViewDidScroll:(UIScrollView *)scrollView { 
    CGPoint p = scrollView.contentOffset; 

    CGFloat height = (float) DASHBOARD_SUMMARY_PANEL_HEADER_HEIGHT; 

    if (p.y <= height && p.y >= 0) { 
     self.SummaryPanelTableView.contentInset = UIEdgeInsetsMake(-p.y, 0, 0, 0); 
    } else if (p.y >= height) { 
     self.SummaryPanelTableView.contentInset = UIEdgeInsetsMake(-height, 0, 0, 0); 
    } 
} 
Смежные вопросы