В UITableView, как я узнаю, когда scrollRectToVisible завершен для строки? - PullRequest
10 голосов
/ 29 марта 2012

Когда я выбираю строку в UITableView, я вызываю scrollRectToVisible:animated в GCRect кадра строки и сразу после этого выполняю некоторые другие анимации. Моя проблема в том, что я не знаю, когда закончится анимация из scrollRectToVisible:animated.

Мой код:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView cellForRwoAtIndexPath:indexPath];

    [self.tableView scrollRectToVisible:cell.frame animated:YES];

    //more animations here, which I'd like to start only after the previous line is finished! 
}

Ответы [ 3 ]

16 голосов
/ 28 февраля 2013

Я столкнулся с этим UIScrollViewDelegate методом:

- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView
{
   // Do your stuff.
}

Вызывается только для анимированных свитков.Не требуется для сенсорных свитков.Кажется, отлично работает.

7 голосов
/ 07 мая 2015

Более простым способом является инкапсуляция кода прокрутки в блок UIView animateWith [...], например:

[UIView animateWithDuration:0.3f animations:^{
    [self.tableView scrollRectToVisible:cell.frame animated:NO];
} completion:^(BOOL finished) {
    // Some completion code
}];

Обратите внимание, что animated == NO в scrollRectToVisible: animated: method.

4 голосов
/ 29 марта 2012

Протокол UITableViewDelegate соответствует UIScrollViewDelegate.Вы можете установить параметр BOOL при прокрутке вручную, а затем отметьте его в scrollViewDidScroll:

BOOL manualScroll;
...
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView cellForRwoAtIndexPath:indexPath];

    manualScroll = YES;
    [self.tableView scrollRectToVisible:cell.frame animated:YES]; 
}
...
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    if (manualScroll)
    {
        manualScroll = NO;
        //Do your staff
    }

}

Не забудьте установить UITableViewDelegate.

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