1

たくさんの子UIScrollViewを含む親UIScrollViewがあり、すべてのスクロールビューはあらゆる方向にスクロールできます。各子の上部には、親のサブビューである UIView があります。

ユーザーが上部の UIView のいずれかからドラッグしている場合にのみ、親のスクロールを有効にしたいと考えています。

そうする考えはありますか?ありがとう !

4

2 に答える 2

0

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でスクロールを再度有効にします。

于 2013-07-13T06:57:15.810 に答える
0

よし、やっと見つけた!-(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];

}`

于 2013-07-13T13:33:52.093 に答える