2013-03-16 26 views
0

我有一個水平滾動視圖,它是垂直滾動視圖的子視圖。它看起來像垂直滾動視圖正在攔截所有的用戶交互。我想能夠水平滾動水平滾動視圖。我將如何做到這一點?如何與作爲滾動視圖的子視圖的水平滾動視圖進行交互?

這裏是我的一小段代碼:

UIScrollView *scrollView2 = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0,  self.view.width, 100)]; 

    scrollView2.contentSize = CGSizeMake(self.view.bounds.size.width + 400, 100); 

    _scrollView.contentSize = CGSizeMake(self.view.width, 400); 

    _scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, self.view.height - 108)]; 

[self.view addSubview:_scrollView]; 

[_scrollView addSubview:scrollView2]; 
+0

可能重複http://stackoverflow.com/問題/ 2383487/uiscrollview-within-uiscrollview) – Till 2013-03-16 03:48:51

+0

請參閱@BenGottlieb的[answer](http://stackoverflow.com/a/2383515/91282)。 – Till 2013-03-16 03:49:53

+0

似乎無法得到它的工作。我在代碼中包含了簡單的代碼片段。 – user2172447 2013-03-16 06:15:11

回答

2

你也可以繼承父滾動視圖,並覆蓋touchesShouldCancelInContentView:返回NO每當觀點是孩子滾動視圖。即;

MyScrollView.h 

@interface MyScrollView: UIScrollView 
@end 

和MyScrollView.m

@implementation MyScrollView 


-(BOOL)touchesShouldCancelInContentView:(UIView *)touchedView{ 
     if(touchedView == _scrollView2){ //Get the reference of that child scroll view here 
     return NO; 
     }else{ 
     [super touchesShouldCancelInContentView:touchedView]; 
     } 
} 

然後你發佈的代碼應該是這樣的:

UIScrollView *scrollView2 = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0,  self.view.width, 100)]; 

    scrollView2.contentSize = CGSizeMake(self.view.bounds.size.width + 400, 100); 



    _myScrollView = [[MyScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, self.view.height - 108)]; 
    _myScrollView.contentSize = CGSizeMake(self.view.width, 400); 


[_myScrollView addSubview:scrollView2]; 
[self.view addSubview:_myScrollView]; 
[內的UIScrollView的UIScrollView(的
+0

例如: 創建父滾動視圖的子類,並在此類中將scrollview2添加爲子視圖。然後執行如下操作: - (BOOL)touchesShouldCancelInContentView:(UIView *)touchedView if(touchedView == _scrollView2){ return NO; } else { [super touchesShouldCancelInContentView:touchedView]; } } 不知道這是否正確。 – user2172447 2013-03-16 17:39:50

+0

不是父視圖的子類。使父視圖成爲UIScrollVIew的一個子類。然後照你所說的去做。 – Rakesh 2013-03-16 19:00:23

+0

@ user2172447:另一件事。在初始化之前,您似乎正在設置_scrollView的'contentSize'。這是行不通的。我已經更新了我的答案。讓我知道它是否有效。 – Rakesh 2013-03-16 19:13:20

0

無法發表評論。因此在這裏回答。

我之前遇到過這個問題。我不記得確切的解決方案。但我認爲問題在於,您正在嘗試在第二個視圖控制器之後添加第二個視圖控制器。我認爲你應該嘗試相反的方式。

[_scrollView addSubview:scrollView2]; 
[self.view addSubview:_scrollView]; 
+0

似乎沒有爲我工作。 – user2172447 2013-03-16 17:32:24