3

水平スクロールが有効になっている 1 つの大きなスクロールビューが必要です。この scrollView 内に、垂直方向にスクロールできる他の 5 つのスクロールビューが必要です (たとえば)。

タッチイベントを処理する方法について誰かが正しい方向に向けることができますか?

2 つのジェスチャレコグナイザー (タップ用に 1 つ、パン用に 1 つ) を作成し、X 値と Y 値のデルタを使用して水平または垂直スワイプを計算することを考えています。方向を確認した後、大きなスクローラーまたはいずれかのスクローラーを有効または無効に設定します。これは正しいアプローチですか?


編集:上記の方法を使用する代わりに、5つのスクロールビューを大きなスクロールビューのサブビューとして追加することにより、5つのスクロールビュー(垂直スクロール)を1つの大きなスクロールビュー(水平)に追加できました。たぶん、このコードは誰かを助けることができるので、サンプルコードも提供します。

for (int i = 0; i < NumberOfVerticalScrollers; i++) {
        CGRect frame;
        frame.origin.x = self.scrollView.frame.size.width * i;
        frame.origin.y = 0;
        frame.size = self.scrollView.frame.size;

        UIScrollView *scroller = [[UIScrollView alloc] initWithFrame:frame];
        scroller.directionalLockEnabled = YES;
        scroller.contentSize = CGSizeMake(320, 960);
        [self.scrollView addSubview:scroller];
}
self.scrollView.delegate = self;
self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width * NumberOfVerticalScrollers, self.scrollView.frame.size.height);
4

4 に答える 4

1

水平方向にスクロールできるメインスクロールビューを作成するだけで、addSubViewメソッドを使用してメインスクロールビューに他のスクロールビューを追加するだけで済みます。iOSは、スクロールを適切に処理するために必要なすべてのイベントを処理します。content size正しいスクロールビューとframe各スクロールビューを割り当てるだけで済みます。

于 2012-05-23T16:48:02.730 に答える
1

これを行うには、他の垂直スクロール ビューをサブビューとして追加する水平スクロール ビューを 1 つ作成するだけです。処理すべき重要なことは、ベース スクロール ビューが水平方向にスクロールする場合、垂直スクロール ビューのスクロールを無効にする必要があることです。

あなたは聞くことができます:

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView

それが発生した場合、垂直スクロールビューのスクロールを無効にすることができます

以下では、スクロールバックを有効にします。

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
于 2012-05-23T16:33:30.930 に答える
0

派手なことをする必要はないと思います。

この質問を参照してください

その質問にリンクされている例では、ズームとバウンスを無効にすると、それが機能することがわかります。

于 2012-05-23T16:30:37.660 に答える
0

各テーブルビューセルを水平方向にスクロールでき、別のテーブルビューを含む、垂直テーブルビューを使用する「Pulse」というアプリがあります。これにより、キャッシュと UI イベントが処理されます。その例を見つけて、目的に合わせて評価する必要があります(おそらくデフォルトの実装を90度回転させます)

パルスのような UI を再作成する方法は?

于 2012-05-23T16:37:38.187 に答える