A UIScrollView
, суперкласс UITableView
, может быть несчастным существом. В них запрограммировано так много поведения, что иногда то, что на бумаге кажется легким, может быть трудным. Добавьте к этому тот факт, что это является табличным представлением, и оно только ухудшается.
Если вы решили использовать свойство UITableView
tableFooterView
для достижения этой цели, я имел ограниченный (очень) успех, используя:
Это UIScrollViewDelegate
методы, ваш контроллер представления, вероятно, уже является делегатом табличного представления.
- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView{
UIView *tableViewFooter = _tableView.tableFooterView;
CGFloat maxContentOffsetY = tableViewFooter.frame.origin.y - scrollView.frame.size.height;
if (scrollView.contentOffset.y > maxContentOffsetY){
//if (targetPoint.y > maxContentOffsetY){
[scrollView setContentOffset:CGPointMake(0, maxContentOffsetY) animated:YES];
}
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{ // called when scroll view grinds to a halt
// Check offset and correct if we landed below the correct offset
UIView *tableViewFooter = _tableView.tableFooterView;
CGFloat maxContentOffsetY = tableViewFooter.frame.origin.y - scrollView.frame.size.height;
if (scrollView.contentOffset.y > maxContentOffsetY){
[scrollView setContentOffset:CGPointMake(0, maxContentOffsetY) animated:YES];
}
}
Я бы предложил просто добавить градиент к свойству view вашего контроллера вида. Таким образом, когда таблица прокручивается за пределы экрана, вы увидите градиент позади нее. Тогда вы получите большинство желаемого поведения бесплатно.