たくさんの子UIScrollViewを含む親UIScrollViewがあり、すべてのスクロールビューはあらゆる方向にスクロールできます。各子の上部には、親のサブビューである UIView があります。
ユーザーが上部の UIView のいずれかからドラッグしている場合にのみ、親のスクロールを有効にしたいと考えています。
そうする考えはありますか?ありがとう !
たくさんの子UIScrollViewを含む親UIScrollViewがあり、すべてのスクロールビューはあらゆる方向にスクロールできます。各子の上部には、親のサブビューである UIView があります。
ユーザーが上部の UIView のいずれかからドラッグしている場合にのみ、親のスクロールを有効にしたいと考えています。
そうする考えはありますか?ありがとう !
touchesBegan: を使用してユーザーがどこに触れているかを検出しようとすることができます。それが UIViews の 1 つにある場合は、すべての子 scrollViews のスクロール (または対話) を無効にすることができます。コードでは:
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
//check if touch is in one of the UIViews
//if so disable child UIScrollView interaction like so:
childScrollView.scrollEnabled = NO;
}
次に、タッチ終了メソッドで、子scrollViewsでスクロールを再度有効にします。
よし、やっと見つけた!-(UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event
親スクロールビューのコールバックをオーバーライドします。
`-(UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
if (CGRectContainsPoint(myFrame, point))
{
self.scrollEnabled = YES;
}
else
{
self.scrollEnabled = NO;
}
return [super hitTest:point withEvent:event];
}`