Iphone 如何检测UIScrollView的下一个页码,即';scrollView.PaginEnabled';=对在';ScrollViewDiEndDraging';?

Iphone 如何检测UIScrollView的下一个页码,即';scrollView.PaginEnabled';=对在';ScrollViewDiEndDraging';?,iphone,ios,objective-c,uiscrollview,scroll,Iphone,Ios,Objective C,Uiscrollview,Scroll,我在stackoverflow上搜索了几个东西 CGFloat pageWidth = scrollView.frame.size.width; int pageNumberToBeScrolled = floor((scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1; if (pageNumberToBeScrolled != 1) { // Do what I want } 在 但这只有在我慢慢滚动的情况下才有效

我在stackoverflow上搜索了几个东西

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

但这只有在我慢慢滚动的情况下才有效,所以滚动页面肯定会移动到一半以上。如果我像刷卡一样快速滚动,这不起作用。我只是滚动了30%的滚动页面,这不符合那里的情况,但它滚动到下一页,我想检测它

如何检测或捕获所有
滚动到下一页
情况?请给我一些帮助:)

编辑
我之所以这么做是因为我想在滚动到下一页时播放一种效果。我应该在我的手指离开屏幕后立即检测,并且只用于下一页滚动。我想如果我在ScrollViewDiEndDraging上处理这个问题,对我来说是最好的:)

像这样试试可能会对你有帮助

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
        float fractionalPage = scrollView.contentOffset.x / 320;
        NSInteger page1 = lround(fractionalPage);
        NSLog(@"%d",page1);
}

我用这段代码来检测当前页面是否被更改,无论您滚动的速度是快是慢都没有关系

- (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 */
        }  
}

320 ? 当设备是iPad或当用户旋转设备时,它会工作吗?此代码检测下一页。谢谢你@Sunny。还有@mstfbsnli,我认为如果
320
->
[UIScreen mainscreen].bounds.size.width
,它会起作用。但问题是,我想在我的手指离开屏幕后立即捕捉它。当
-(void)ScrollViewDiEndDraging:(UIScrollView*)scrollView将减速时,时间正好相同:(BOOL)减速被调用@Sunny,你能帮我调整一下时间吗?
320
->
scrollView.frame.size.width
?谢谢你的回答:)我正在编写你的代码以用于我的项目,不幸的是,这不适合我的项目我想在解释我的
编辑部分时播放一种效果声音
。我必须检测我的手指何时离开屏幕,但如果我使用您的代码,
/*页面确实更改了*/
部分名为
,而我的手指在屏幕上
并左右移动以移动半个滚动视图。然后我的应用程序继续播放效果声音。你能在ScrollViewDiEndDraging上解决这个问题吗?如果我用那个方法处理这个问题,那将是最好的:)mstfbsnli,您的代码最终帮助我解决了我的问题。感谢您的努力;-)它似乎工作正常,但我遇到了与steven类似的问题-我必须检测我的手指何时离开屏幕,但如果我使用您的代码,/*页面确实在我的手指在屏幕上时更改了*/部分调用。你们解决这个问题了吗?在这种情况下我能做什么?
- (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 */
        }  
}