Как узнать, прокручивается ли UITableView вручную (вручную) или программно? - PullRequest
14 голосов
/ 28 июля 2011

Я использую UITableView в своем коде, и было бы неплохо узнать, прокручивал ли пользователь вручную UITableView или это было сделано программно. Есть ли способ узнать это?

Ответы [ 5 ]

30 голосов
/ 24 сентября 2011

UITableView является подклассом UIScrollView. так что вы можете использовать это

if (!tableView.isDragging && !tableView.isDecelerating)
{
   // the table is *not* being scrolled
}

это работает. Я использую его в одном из своих приложений.

6 голосов
/ 28 февраля 2014

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

- (void)scrollViewWillBeginDragging:(UIScrollView *)activeScrollView

Не забудьте надеть это тоже ...

@interface YourViewController : UIViewController <UIScrollViewDelegate>

Надеюсь, это поможет, ура :) 1007 *

1 голос
/ 31 января 2018

Лучший метод, который я нашел, это использовать свойство isTracking вместо isDragging.

if tableView.isTracking && tableView.isDecelerating {
    // Table was scrolled by user.
}
0 голосов
/ 25 октября 2018

Я проверил tableView.isTracking и tableView.isDecelerating внутри scrollViewDidScroll . Тем не менее, это не сработало для меня, если пользователь лишь слегка переместил вид таблицы. Поскольку у scrollView есть panGesture, мы можем проверить скорость этого жеста. Если tableView был программно прокручен, скорость в обоих направлениях x и y равна 0.0. Проверяя эту скорость, мы можем определить, прокручивал ли пользователь tableView, потому что у panGesture есть скорость.

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    let velocity = scrollView.panGestureRecognizer.velocity(in: tableView)
    print("Velocity: \(velocity)")
    if velocity.x != 0.0 || velocity.y != 0.0 {
        // user scrolled the tableview
    }
}
0 голосов
/ 28 июля 2011

Вы можете активировать распознаватель касаний, обнаруживая все зарегистрированные касания.

Если просмотр таблицы прокручивается, но отсутствуют прикосновения, он должен покрыть ее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...