Как да задействам 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
Благодаря, Friedgaad, но клетките на табличния изглед изчезват при превъртане в този метод _. - person Non Umemoto; 29.02.2012
comment
Току-що тествах това на табличен изглед и клетките се разсейват, ако изгледът ми е анимиран (в моя случай обръщане). Така че добавих performSelector:@selector afterDelay: и след това клетките се показват. - person Friesgaard; 01.03.2012
comment
благодаря, но получих [ReadItLaterViewController scroll]: неразпознат селектор, изпратен до инстанция 0x8bee9a0 след зареждане на приложението ми. Изглежда, че трябва да декларирам превъртане, но не можах да декларирам това void (^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

Опитайте това в метода ShouldStartLoadWithRequest Delegate на уеб изглед

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