如何检测UIScrollView的下一页编号,即'scrollView.pagingEnabled'= YES?在'scrollViewDidEndDragging'?

Woo*_*Kim 6 iphone scroll objective-c uiscrollview ios

我在stackoverflow上搜索了几个东西

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

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate;
Run Code Online (Sandbox Code Playgroud)

但这只有在我慢慢滚动时才有效,因此滚动页面肯定会移动一半以上.如果我像滑动一样快速滚动,这不起作用.我只是滚动了30%的滚动页面,这不满足那里的情况,但它滚动到下一页,我想检测它.

如何检测或捕捉所有scroll-to-next-page情况?请给我一些帮助:)

编辑

我正在研究这个因为我想在滚动到下一页时发出效果声.我应该在我的手指离开屏幕后立即检测到并且仅用于下一页滚动.我想如果我处理它scrollViewDidEndDragging,它对我来说最好:)

lim*_*mon 22

我正在使用此代码来检测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 */
        }  
}
Run Code Online (Sandbox Code Playgroud)