0

私はこの問題に何週間も取り組んできましたが、まだ解決策がありません。助けてください。

画像付きの大きなスクロールビューがあります。各画像は画面幅で、ページングが有効になっています。

このスクロール ビューの下部に、ボタン付きの別のスクロール ビューがあります。各画像の各ボタン。画像ボタンを押すと、大きなスクロール ビューが画像にジャンプします。

たくさんの画像があるので、小さなスクロール ビューにたくさんのボタンがあります。

現在、大きなスクロールと小さなスクロールは正常に機能しており、ボタンも動作しています。

私の問題は、小さなスクロールの端から始まります。小さなスクロールの最後にいるとき (ただし、まだ大きなスクロールの真ん中にあります)、指を行き止まりに動かしたときに大きなスクロールを動かしたくありません。小さなスクロールを大きなスクロールから分離したいと言うことができますが、それでも彼をサブビューとして残します (大きなスクロールと一緒に移動したいため)。

小さなスクロール、ボタン、オーバーライド hitTest および touchesBegan/End をサブクラス化しようとしましたが、これまでのところ何もありません。

私の貸衣装が彼のやり方でこれを要求するので、私は本当に本当にイライラしています.

私は長い間グーグルで検索されてきましたが、何も見つかりません!

ヘルペッパー!

4

1 に答える 1

0

これは、私のプロジェクトの 1 つで非常に貴重であることがわかったコードの一部です。

- (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
    UIView* result = [super hitTest:point withEvent:event];

    if (/* result or any of its superviews are equal to your little scroll view */) {
        [self setContentOffset:CGPointZero animated:YES];
        self.scrollEnabled = NO;
    } else {
        self.scrollEnabled = YES;    
    }
    return result;
}

あなたの質問を正しく理解していれば、これで望ましい動作が得られると思います。すべてのスーパービューを処理するにはループが必要になり、コードがはるかに複雑になるため、if ステートメント (コメント) にいくつかの疑似コードがありますが、ビュー階層に精通している場合は、より簡単な解決策を見つけることができます。 .

これがお役に立てば幸いです。コードの理解に問題がある場合は、喜んで説明させていただきます。

EDIT:基本的な考え方は、指が小さなスクロールビューに触れている場合、大きなスクロールビューでスクロールをオフにして、大きなスクロールビューがスクロールしないようにすることです。指が小さなスクロール ビューに触れていない場合、大きなスクロール ビューのスクロールがオンに戻り、通常どおりに動作するはずです。

于 2011-01-26T09:20:54.930 に答える