子View Controllerがページ付きscrollViewのように表示されるコンテナView Controllerを作成しています。このコンテナ コントローラでは、2 本の指を使用して水平方向にスクロールするページを変更したいと考えています。だから私は UIScrollView を使用し、そのように設定しました:
self.scrollView.showsHorizontalScrollIndicator = NO;
self.scrollView.showsVerticalScrollIndicator = NO;
self.scrollView.delegate = self;
[self.scrollView setContentOffset:[self rectForPage:1].origin];
for (UIGestureRecognizer *gestureRecognizer in self.scrollView.gestureRecognizers) {
if ([gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]]) {
UIPanGestureRecognizer *panGR = (UIPanGestureRecognizer *) gestureRecognizer;
panGR.minimumNumberOfTouches = 2;
}
}
- (void)scrollViewDidScroll:(UIScrollView *)sender
縦スクロールを回避する方法も実装しました
- (void)scrollViewDidScroll:(UIScrollView *)sender {
CGFloat pageWidth = self.scrollView.frame.size.width;
int page = floor((self.scrollView.contentOffset.x +pageWidth/2) / pageWidth);
self.pageControl.currentPage = page;
[self.scrollView setContentOffset: CGPointMake(self.scrollView.contentOffset.x, 0)];
}
問題は、childViewControllers サブビューがユーザーからのタッチを受信できないことです。ビュー階層をスローするシングルタッチを渡したいです。UIScrollView をサブクラス化してメソッドを上書きすることについて読んだことがあります- (BOOL)touchesShouldBegin:(NSSet *)touches withEvent:(UIEvent *)event inContentView:(UIView *)view
が、サブビューが UIControl の場合にのみ呼び出されます。どうすればそれができますか?
目的は、この ChildViewControllers の内部に UIButtons と、singleTouches で使用する必要がある ScrollViews があることです。