2013-04-25 56 views
6

我搜索一些東西的計算器一樣如何檢測'scrollView.pagingEnabled'= YES的UIScrollView的下一頁數量?在'scrollViewDidEndDragging'?

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,它會爲我做最好的:)

回答

22

我使用此代碼來檢測,如果當前頁是改變,無論你滾動速度非常快還是非常慢。

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

感謝您的回答:)我正在使用我的項目的代碼,不幸的是,這不適合我的項目。 '當我解釋我的'編輯部分'時,我想'發揮效果聲音'。當我的手指離開屏幕時,我必須檢測,但是如果我使用你的代碼,'/ *頁面確實改變了* /'在我的手指放在屏幕上的部分'並且左右移動了一半的scrollView。然後我的應用繼續播放效果音效。你可以在'scrollViewDidEndDragging'上解決這個問題嗎?如果我用這種方法處理這個問題,那麼最好:) – 2013-04-26 00:45:01

+0

mstfbsnli,你的代碼終於幫我解決了我的情況。謝謝你的努力;-) – 2013-04-26 05:13:20

+1

它似乎工作正常,但我碰到類似的問題,像史蒂文 - 我必須檢測當我的手指離開屏幕,但如果我使用你的代碼,/ *頁確實改變* /部分叫我的手指在屏幕上。你們有沒有解決這個問題?在這種情況下我能做什麼? – Xcoder 2014-02-20 06:53:49

1

嘗試這樣可能it'l幫助你

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

320?當設備是iPad還是用戶旋轉設備時它工作嗎? – limon 2013-04-25 15:02:39

+0

該代碼檢測下一頁。謝謝@孫尼。和@mstfbsnli,我認爲它會工作,如果'320' - >'[UIScreen mainscreen] .bounds.size.width'。但問題是,我想在我的手指離開屏幕後立即抓住它。這與' - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)減速;'被調用時的時機相同。 @孫尼,你能幫我解決這個問題嗎? – 2013-04-25 15:25:11

+0

'320' - >'scrollView.frame.size.width'? – 2014-01-17 00:58:23

相關問題