2010-12-18 33 views
5

我與pagingEnabled的的UIScrollView設置爲YES,並以編程方式滾動其內容底部:的UIScrollView:單一的水龍頭滾動其頂部

CGPoint contentOffset = scrollView.contentOffset; 
contentOffset.y = scrollView.contentSize.height - scrollView.frame.size.height; 
[scrollView setContentOffset:contentOffset animated:YES]; 

它成功地滾動,但在此之後,在單一的水龍頭其內容滾動直到抵消它在滾動之前。只有當我programmaticaly滾動scrollView的內容到底部,然後點擊。當我滾動到任何其他偏移然後點擊時,什麼也沒有發生。

這絕對不是我想要的。這應該如何解決?

非常感謝提前!

帖木兒。

回答

0

當滾動滾動型我會建議使用

[scrollView scrollRectToVisible:CGRectMake(0,0,1,1) animated:YES];

當矩形是你後的位置。 (在這種情況下,矩形將是滾動視圖的頂部)。

更改內容偏移量不是滾動滾動視圖的正確方法。

+0

另一方面,也許我誤解了這個問題:D – Accatyyc 2010-12-18 23:15:25

+0

Accatyyc,謝謝你的回覆。我用適當的scrollRectToVisible:call替換了setContentOffset:但不幸的是沒有解決問題。 – indexless 2010-12-19 21:05:16

3

以下解決方法確實幫助(假設一個與類別擴展UIScrollView的,所以「自我」是指它的實例):

-(BOOL) scrolledToBottom 
{ 
    return (self.contentSize.height <= self.frame.size.height) || 
      (self.contentOffset.y == self.contentSize.height - self.frame.size.height); 
} 

然後,一個人應該也會轉而pagingEnabled關閉,只是在位置滾動視圖到達底部。在委託(pagingEnabled是initialy上當然的,因爲只有當它被啓用時出現問題):

-(void) scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    if (scrollView.pagingEnabled == YES) 
    { 
     if ([scrollView scrolledToBottom] == YES) 
      scrollView.pagingEnabled = NO; 
    } 
    else 
    { 
     if ([scrollView scrolledToBottom] == NO) 
      scrollView.pagingEnabled = YES; 
    } 
} 
+0

謝謝!我簡化了我的案例的代碼(向右滾動)到一行。檢查我的答案:) – Tomasz 2013-05-06 02:38:54

4

我只是想出了是什麼原因導致這個問題,以及如何避免它。如果在滾動視圖中將pagingEnabled設置爲YES,則必須將contentOffset設置爲滾動視圖可見大小的倍數(即,您應該位於分頁邊界上)。

具體的例子:

如果你滾動視圖是(比方說)高配的920內容區域460個像素,你就需要設置內容偏移爲0或460,如果你想避免「滾動開始點擊「問題。

作爲獎勵,最終結果可能會更好看,因爲您的滾動視圖將與分頁邊界對齊。 :)

+0

wlach,謝謝!但是當你的高度不是幀高的倍數時,你就不會得到正確的行爲,對吧? :) – indexless 2010-12-22 07:15:01

+0

不確定,但如果內容不是幀高度的倍數,爲什麼還要啓用分頁? – wlach 2010-12-22 16:47:44

5

這個小黑客可以防止UIScrollView在點擊時滾動。看起來像滾動視圖啓用分頁時發生這種情況。

在你的UIScrollView委託添加這個方法:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView { 
    scrollView.pagingEnabled = self.scrollView.contentOffset.x < (self.scrollView.contentSize.width - self.scrollView.frame.size.width); 
} 

這將禁用分頁時滾動視圖達到水平滾動條右端(我的使用情況,您可以使其適應其他方向容易)。

相關問題