UIImageViewsがネストされたUIScrollViewがあります。各画像ビューはズームできますが、画像を拡大しながら内側のスクロールビューをスクロールしようとすると、外側のスクロールビューがそれを取得して画像ビューを切り替えます。
内側がズームされていない場合にのみ外側のスクロールビューがスクロールするように、これを防ぐにはどうすればよいですか?
UIImageViewsがネストされたUIScrollViewがあります。各画像ビューはズームできますが、画像を拡大しながら内側のスクロールビューをスクロールしようとすると、外側のスクロールビューがそれを取得して画像ビューを切り替えます。
内側がズームされていない場合にのみ外側のスクロールビューがスクロールするように、これを防ぐにはどうすればよいですか?
他の人を助けるために仕事をしなければならなかったという私の答えを投稿します。
ネストされた UIScrollView を処理する簡単な方法の 1 つは、同じデリゲートを共有することです。このようにして、UIScrollView のスクロールを 1 つ検出すると、コントローラー ロジックを簡単に共有して、設定をもう一方に適用できます。
私が抱えていたこの特定の問題を解決するには、現在のズーム状態で BOOL を保持するだけでした。内側のスクロールビューがズームしていることをアプリが検出すると、
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView1 {
return [innerScrollViews objectAtIndex:[self indexOfComicViewWithOffset:currentOffset]];
}
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView1 withView:(UIView *)view atScale:(float)scale {
if (scale == 1) {
zooming = NO;
[outerScrollView setScrollEnabled:YES];
} else {
zooming = YES;
[outerScrollView setScrollEnabled:NO];
}
}