6

私はstackoverflowのようなものをいくつか検索しました

CGFloat pageWidth = scrollView.frame.size.width;
int pageNumberToBeScrolled = floor((scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1;
if (pageNumberToBeScrolled != 1) {
    // Do what I want
}

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate;

しかし、これはゆっくりとスクロールした場合にのみ機能するため、スクロールページは間違いなく半分以上移動します。スワイプのように速くスクロールした場合、これは機能しません。スクロールページの 30% のようにスクロールしただけで、あちらの状況を満たしていませんが、次のページにスクロールしたので、それを検出したいと思います。

scroll-to-next-pageすべての状況を検出または捕捉するにはどうすればよいですか? 助けてください:)

編集

次のページへのスクロールが発生したときに効果音を再生したいので、これに取り組んでいます。指が画面から離れた直後に、次のページのスクロールのみを検出する必要があります。これを処理すればscrollViewDidEndDragging、それが私にとって最善だと思います:)

4

2 に答える 2

23

このコードを使用して currentPage が変更されたかどうかを検出しています。スクロールが非常に速くても遅くてもかまいません。

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
        static NSInteger previousPage = 0;
        CGFloat pageWidth = scrollView.frame.size.width;
        float fractionalPage = scrollView.contentOffset.x / pageWidth;
        NSInteger page = lround(fractionalPage);
        NSLog(@"%d",page);
        if (previousPage != page) {
            previousPage = page;
            /* Page did change */
        }  
}
于 2013-04-25T15:39:45.153 に答える
1

このように試してみてください

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
        float fractionalPage = scrollView.contentOffset.x / 320;
        NSInteger page1 = lround(fractionalPage);
        NSLog(@"%d",page1);
}
于 2013-04-25T14:52:25.680 に答える