Как запустить scrollsToTop после нажатия на строку состояния программно?

Я хочу запустить функцию scrollsToTop, которая срабатывает, когда вы программно касаетесь строки состояния, если пользователи касаются заголовка панели навигации.

Это мой метод на данный момент.

[tableView_ setContentOffset:CGPointMake(0, 0) animated:YES];
[tableView_ flashScrollIndicators];

Но он не анимирует ScrollIndicators, как если бы вы касались строки состояния для прокрутки вверх.

Любая помощь будет оценена по достоинству, спасибо!


person Non Umemoto    schedule 29.02.2012    source источник


Ответы (3)


Вы пробовали использовать -setContentOffset:animated в сочетании с методами UIScrollViewDelegate - (void)scrollViewDidScrollToTop: и / или -(void)scrollViewDidEndScrollingAnimation:?

Вы могли бы отправить свой -flashScrollIndicators в один из них, вместо того, чтобы полагаться на таймеры, то есть используя -performSelector:withObject:afterDelay).

person Kristofer Sommestad    schedule 20.04.2012

Попробуйте что-нибудь вроде

-(void)doScroll{
    void (^scroll)(void) = ^{
        [contentTableView setContentOffset:CGPointMake(0, 0) animated:NO];
        [contentTableView flashScrollIndicators];
    };

    [UIView animateWithDuration:0.5 animations:scroll];
}

- (void)viewDidLoad {
    [super viewDidLoad];
    [self performSelector:@selector(doScroll) withObject:nil afterDelay:1];
}
person Friesgaard    schedule 29.02.2012
comment
Спасибо, Фридгаад, но при прокрутке в этом методе ячейки представления таблицы исчезают _. - person Non Umemoto; 29.02.2012
comment
Я только что протестировал это на табличном представлении и в расслоении ячеек, если мое представление анимируется (в моем случае это флип). Итак, я добавил performSelector: @selector afterDelay:, и затем отображаются ячейки. - person Friesgaard; 01.03.2012
comment
спасибо, но я получил [ReadItLaterViewController scroll]: неопознанный селектор, отправленный экземпляру 0x8bee9a0 после загрузки моего приложения. Кажется, мне нужно отключить прокрутку, но я не мог удалить эту пустоту (^ scroll) (void) в @interface. Извините за мои ограниченные знания, эта функция может быть C? И есть ли причина для CGPointMake (0, 3000) вместо (0,0)? - person Non Umemoto; 02.03.2012
comment
Кроме того, если я прокручиваю текущее представление таблицы до точки, где я вижу 9-ю ячейку представления таблицы, и запускаю метод doscroll, ячейки представления таблицы исчезают. Но, если я просто прокручиваю представление таблицы немного вниз и запускаю метод doscroll, он просто прокручивается вверх с полосой индикатора. - person Non Umemoto; 02.03.2012
comment
Я только что сделал ошибку копирования / вставки из своего собственного кода, это должны быть @selector (doscroll) и CGPointMake (0,0)! - person Friesgaard; 02.03.2012
comment
Я пробовал, как вы предложили, но все же ячейки табличного представления исчезают. Возможно, в моем приложении слишком много ячеек табличного представления. Так как он отлично работает, если я не прокручиваю так много, как 8 или 9 ячеек. В любом случае спасибо за вашу помощь. - person Non Umemoto; 03.03.2012

Попробуйте это в методе Delegate ShouldStartLoadWithRequest в веб-представлении

    ((UIScrollView *)[[self.challengeWebView subviews] objectAtIndex:0]).scrollsToTop = NO;
person Naren    schedule 19.04.2013