2012-07-18 30 views
1

我有一個通用的應用程序,代碼是相同的。我有一個UIScrollView,其中scrollToTop在iPad上工作,但不在iPhone上。我對此感到非常沮喪。UIScrollView scrollToTop沒有被調用的iPhone

我知道有一個類似的線程發佈here,但事實並非如此。在iPad和iPhone之前,我曾經有過滾動功能。任何想法找什麼?

代碼的結構是這樣的。我有一個名爲A的mainVC。然後我有一個名爲B的VC。還有另一個名爲C的VC,它有一個UIScrollView。我將C添加爲B的子視圖控制器。然後B作爲A的小孩VC。現在C上的滾動視圖沒有scrollToTop的工作。

委託scrollViewShouldScrollToTop也只在iPad中調用,而不是在iPhone中調用。

+0

[scrollToTop無法在iPhone上工作,但它在iPad上工作](http://stackoverflow.com/questions/8542122/scrolltotop-is-not-working-on-iphone-but-it-is在iPad上工作) – 2012-07-18 20:50:33

+0

@DavidRönnqvistys我已經在上面提及它,我已經讀了 – xonegirlz 2012-07-18 21:14:59

回答

1

查看my answer到您剛纔討論的問題。我剛剛添加了它。

編輯

我沒有我所做的原代碼,但它應該是這樣的:

-(void)cleanUp:(UIScrollView*)view{ 
    if([view isKindOfClass:[UIScrollView class]]){ 
     view.scrollsToTop = NO; 
    }else{ 
     for(UIScrollView* subview in view.subviews){ 
      if([subview isKindOfClass:[UIView class]]){ 
       [self cleanUp:subview]; 
      } 
     } 
    } 
} 

,你可以這樣調用:

[self cleanUp:self.view]; 

你可能還需要更多棘手的變體(有時你可能有一個tableView在一個scrollView或類似的東西):

-(void)cleanUp:(UIScrollView*)view{ 
    if([view isKindOfClass:[UIScrollView class]]){ 
     view.scrollsToTop = NO; 
    } 
    for(UIScrollView* subview in view.subviews){ 
     if([subview isKindOfClass:[UIView class]]){ 
      [self cleanUp:subview]; 
     } 
    } 
} 
+0

這實際上工作!你也應該把它粘貼在這裏 – xonegirlz 2012-07-18 21:20:49

0

如果可能,請粘貼添加子視圖代碼在這裏。看起來問題是滾動視圖出現的視圖隱藏在其他視圖之後。嘗試改變添加子視圖的順序。或者,您也可以嘗試使用滾動視圖頂部的SubviewtoFront屬性。

讓我知道它是否有幫助。

1

我剛接手@Ariel的解決方案,並做了一些改進,我想與大家分享:

+ (void)globalDisableScrollToTop:(UIView *)_view; 
{ 
    // Check whether we got a scroll view 
    if ([_view isKindOfClass:[UIScrollView class]]) 
    { 
     // Disable scroll to top 
     ((UIScrollView *)_view).scrollsToTop = NO; 
    } 

    // Iterate all subviews 
    for (UIView *view in _view.subviews) 
    { 
     // Recursive call of this method 
     [self globalDisableScrollToTop:view]; 
    } 
} 

或者沒有註釋:

+ (void)globalDisableScrollToTop:(UIView *)_view; 
{ 
    if ([_view isKindOfClass:[UIScrollView class]]) 
     ((UIScrollView *)_view).scrollsToTop = NO; 

    for (UIView *view in _view.subviews) 
     [self globalDisableScrollToTop:view]; 
} 

現在修復所有子視圖,並可以實現作爲你的根滾動視圖類的靜態方法。

相關問題