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];
4

2 に答える 2

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];
于 2013-03-16T07:01:13.430 に答える
0

コメントできません。したがって、ここで答えます。

私は以前にこの問題に直面しました。正確な解決策は覚えていません。しかし、問題は、2番目のView Controllerの後に2番目のView Controllerを追加しようとしていることにあると思います。逆にやってみるといいと思います。

[_scrollView addSubview:scrollView2];
[self.view addSubview:_scrollView];
于 2013-03-16T06:43:57.400 に答える