2012-05-23 98 views
3

我想使用水平滾動的一個大型滾動視圖。在這個scrollView中,我希望有(可以說)5個可以垂直滾動的其他滾動視圖。如何在一個滾動視圖中使用多個滾動視圖

任何人都可以指出我在正確的方向如何處理touchevents?

我在考慮製作兩個gesturerecognizer(1代表龍頭,1代表平移),並使用X和Y值的增量來計算水平或垂直滑動。在檢查方向之後,我設置了大卷軸或其中一個卷軸來啓用或禁用。這是正確的approuch?


編輯: 而不是使用我的方法上面我只是能夠通過添加5個scrollviews作爲一個大的子視圖在一個大的滾動視圖(水平)加我5個scrollviews(垂直滾動)的。也許這個代碼也可以幫助某人,並提供示例代碼。

for (int i = 0; i < NumberOfVerticalScrollers; i++) { 
     CGRect frame; 
     frame.origin.x = self.scrollView.frame.size.width * i; 
     frame.origin.y = 0; 
     frame.size = self.scrollView.frame.size; 

     UIScrollView *scroller = [[UIScrollView alloc] initWithFrame:frame]; 
     scroller.directionalLockEnabled = YES; 
     scroller.contentSize = CGSizeMake(320, 960); 
     [self.scrollView addSubview:scroller]; 
} 
self.scrollView.delegate = self; 
self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width * NumberOfVerticalScrollers, self.scrollView.frame.size.height); 

回答

1

你只需要創建一個主滾動視圖可以滾動水平,和剛需使用addSubView方法在主滾動視圖上添加其他滾動視圖。 iOS處理所有必要的事件以正確處理滾動。您只需分配每個滾動視圖的正確content sizeframe

+0

感謝它的工作,將編輯我的答案與一些示例代碼 – BarryK88

0

我不認爲你需要做的任何幻想。

see this question

在鏈接到這個問題如果禁用變焦和彈跳,你應該看到,它只是工作的例子。

1

要做到這一點,你需要簡單地做一個水平滾動視圖作爲子視圖添加其他垂直滾動視圖。要處理的最大問題是基本滾動視圖將水平滾動時,應禁用垂直滾動視圖上的滾動。

您可以傾聽:

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView 

,當出現你可以禁用滾動你的垂直scrollviews

而且在啓用滾動回如下:

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate 
0

有名爲「Pulse」的應用程序使用垂直tableview,其中每個表視圖單元格可以水平滾動幷包含另一個tableview。這需要處理緩存和UI事件。 你需要找到這樣一個例子,並對其進行評估你的目的(也許旋轉90度的默認實現)

How to recreate a Pulse-like UI?

相關問題