2

プログラムで生成されたスクロールを実行した後に呼び出される UIScrollView デリゲート メソッドを知る必要があります。このリンクから、私は実装しようとする必要があることを知っています

- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView

しかし、それを実装した後、NSlogから、スクロールビューがすでに終了しているときにこのメソッドが呼び出されなかったことがわかりました.nslogは、このデリゲートメソッドを呼び出した後、アプリが呼び出したことを示しています

- (void)scrollViewDidScroll:(UIScrollView *)scrollView{

そして、scrollViewDidEndScrollingAnimation を再度呼び出し、scrollViewDidScroll に何度も戻り、スクロールが実際に停止するまで、プログラムで生成されたスクロールを行う前に BOOL 値を True に設定する必要があり、スクロールが実際に停止した後に False する必要があります。誰かがこの問題を理解するのを手伝ってくれますか?

これは私のサンプルコードです。これを行うには:

BOOL isScroll;

- (void)viewDidLoad {
    isScroll = YES;
    [self generateScrollProgrammatically];
}

- (void) generateScrollProgrammatically{
    //i do some code for scrolling uiscrollview programmatically
}

- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
    NSLog(@"scrollViewDidScroll");

    if (isScroll){
        //do something
    }

}

- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView{
    NSLog(@"scrollViewDidEndScrollingAnimation");
}

ここで私が言われたnslog:

2012-05-31 09:58:10.583 myApps[1203:fb03] scrollViewDidScroll
2012-05-31 09:58:10.584 myApps[1203:fb03] scrollViewDidScroll
2012-05-31 09:58:10.595 myApps[1203:fb03] scrollViewDidScroll
2012-05-31 09:58:10.596 myApps[1203:fb03] scrollViewDidScroll
2012-05-31 09:58:10.597 myApps[1203:fb03] scrollViewDidScroll
2012-05-31 09:58:10.598 myApps[1203:fb03] scrollViewDidScroll
2012-05-31 09:58:10.611 myApps[1203:fb03] scrollViewDidScroll
2012-05-31 09:58:10.615 myApps[1203:fb03] scrollViewDidScroll
2012-05-31 09:58:10.616 myApps[1203:fb03] scrollViewDidScroll
2012-05-31 09:58:10.617 myApps[1203:fb03] scrollViewDidEndScrollingAnimation
2012-05-31 09:58:10.631 myApps[1203:fb03] scrollViewDidScroll
2012-05-31 09:58:10.632 myApps[1203:fb03] scrollViewDidScroll
2012-05-31 09:58:10.633 myApps[1203:fb03] scrollViewDidEndScrollingAnimation
2012-05-31 09:58:10.634 myApps[1203:fb03] scrollViewDidScroll
2012-05-31 09:58:10.635 myApps[1203:fb03] scrollViewDidScroll
2012-05-31 09:58:10.636 myApps[1203:fb03] scrollViewDidEndScrollingAnimation
2012-05-31 09:58:10.636 myApps[1203:fb03] scrollViewDidScroll
2012-05-31 09:58:10.637 myApps[1203:fb03] scrollViewDidScroll
2012-05-31 09:58:10.638 myApps[1203:fb03] scrollViewDidEndScrollingAnimation
2012-05-31 09:58:10.640 myApps[1203:fb03] scrollViewDidScroll
2012-05-31 09:58:10.642 myApps[1203:fb03] scrollViewDidScroll
2012-05-31 09:58:10.644 myApps[1203:fb03] scrollViewDidEndScrollingAnimation
2012-05-31 09:58:10.644 myApps[1203:fb03] scrollViewDidScroll
2012-05-31 09:58:10.645 myApps[1203:fb03] scrollViewDidScroll
2012-05-31 09:58:10.646 myApps[1203:fb03] scrollViewDidEndScrollingAnimation
4

1 に答える 1

1

ええ、これも私を噛みました。その周りで見つけることができる唯一の方法は、次のものを置き換えることです:

[scrollView setContentOffset:offset animated:YES];

と:

[UIView animateWithDuration:[[UIApplication sharedApplication] statusBarAnimationDuration]
                 animations:^{ scrollView.contentOffset = offset; }
                 completion:^{ [scrollView.delegate scrollViewDidEndScrollingAnimation:scrollView]; }];
于 2012-05-31T20:06:07.660 に答える