2010-01-07 343 views
23

我有創建和大小動態使用一個UIScrollView ...的UIScrollView不顯示滾動指示

scrollView.contentSize = CGSizeMake(scrollView.frame.size.width , length); 

我然後添加subviewsUIScrollView。 我確實有scrollView.showsVerticalScrollIndicator = YES;

滾動滾動指示器時從不出現。

即使我打電話[scrollView flashScrollIndicators]什麼也沒有發生。

想法?

+0

看起來不錯。當然,你不是把它放在別的地方回到NO嗎? – 2010-01-07 02:37:54

回答

66

有同樣的問題,找不到原因。最後的回答給出了最後的提示:每當我添加新的子視圖時,我首先從滾動視圖中刪除所有現有的子視圖(顯然也是滾動指示器)。

在我的循環檢查後,如果子視圖真的是那種我想要刪除的滾動指標出現了:

for (NSObject * subview in [[[scrollView subviews] copy] autorelease]) { 
    if ([subview isKindOfClass:[MySubView class]]) { 
     [(MySubView*)subview removeFromSuperview]; 
    } 
} 

更新:改變代碼尼古拉的建議

+2

這段代碼中有一個微妙的錯誤:UIView的'subviews'方法返回視圖使用的原始子視圖數組。這意味着上面的代碼在迭代它時突變了數組。簡單修復:迭代'[[[[scrollView子視圖]複製] autorelease]' – 2010-07-04 22:02:48

+0

哇..這個答覆一次解決2個錯誤:)謝謝:D – 2010-12-06 15:12:39

+0

這是完美的解決方案,謝謝 – RVN 2011-05-27 16:28:38

0

當UIScrollView是一個48像素高的水平帶,可水平滾動時注意到這一點。也許可可決定該區域對於滾動指標來說太小...

+0

在這種情況下,滾動視圖是屏幕長度的幾倍,正好是屏幕的寬度。 – George 2010-01-07 02:43:43

14

當我在處理這個之前,在我的網格實現中,偶爾會在滾動指標的頂部獲得一些單元格。爲了解決這個問題,我現在在索引0處插入子視圖,而不是添加它們,這會將它們添加到頂部。因此,嘗試這樣的事情:

[scrollview insertSubview:subview atIndex:0];

+0

「UICollectionView」有類似解決方案的機會嗎? – rounak 2014-11-02 12:32:23

1

它也將發生(至少在UITableView的情況下)如果contentSize對於表視圖滾動來說太小。如果您啓用了彈跳功能,則表格視圖實際上不會滾動,因此也不會顯示指示符。嘗試在內部安裝更多內容。

8

我解決這個問題通過將此代碼添加新的子視圖後:

self.showsVerticalScrollIndicator = NO; 
self.showsVerticalScrollIndicator = YES; 
+0

這個和涵蓋我的指標的內容是我遇到的問題的根源。 – jbierling 2012-11-18 05:18:12

2

它也可以發生,如果滾動視圖的父母是比滾動視圖本身較小的水平

滾動bar粘在ScrollView/TableView的右側,由於父界限(例如,將其隱藏),此右側不可見。

我見過這個問題,所以我分享它,以防它可以幫助。

只需檢查您的ScrollView框架的寬度是否大於其父視圖框架的寬度。

10

對我來說,水平指示器在iOS 7的應用程序中已經神祕地消失了。後來發現出於某種奇怪的原因,我不得不啓用Shows Horizontal IndicatorShows Vertical Indicator才能顯示水平指示器。如果我將它設置爲不顯示垂直指示符,它也不會顯示水平指示符。

enter image description here

+1

感嘆..第一次世界iOS7問題。這解決了我的問題。 – 2014-05-28 08:05:17

0

兩個條件,

  1. 如果您使用的是故事板
  2. 如果使用內一個UIViewController

一個UITableView然後,你應該檢查你的指標插圖設置爲0(或與您的自動佈局相關的任何其他數字):

enter image description here