Как определить, прокручивается ли пользователь в нижней части UITableView?

Как определить, прокручивается ли пользователь до последней ячейки/нижней части UITableView?

Ответ 1

UITableView наследует от UIScrollView, а просмотр прокрутки предоставляет свойство contentOffset (документация здесь).

Используйте это с небольшим количеством математики, чтобы определить, находится ли contentOffset в пределах frame.size.height внизу.

Обновление: вот удар по формуле, которая даст вам то, что вы хотите:

if(tableView.contentOffset.y >= (tableView.contentSize.height - tableView.frame.size.height)) {
  //user has scrolled to the bottom
}

Ответ 2

Используйте NSArray *paths = [tableView indexPathsForVisibleRows];. Затем проверьте, является ли последний объект в этом массиве indexPath для последней ячейки.

Источник: Другой вопрос

Ответ 3

Благодаря новым версиям iOS существует простой способ использования функции willDisplayCell:

func tableView(tableView:UITableView, willDisplayCell cell:UITableViewCell, forRowAtIndexPath indexPath:NSIndexPath) {

       if (indexPath.row >= tableView.numberOfRowsInSection(0)) {

           NSLog("User got to bottom of table")

       } 
}

Обратите внимание, что UICollectionViews имеют аналогичную функцию:

func collectionView(collectionView: UICollectionView, willDisplayCell cell: UICollectionViewCell, forItemAtIndexPath indexPath: NSIndexPath) {

}