2

こんにちは、みんな!

ネストされたスクロール ビューについて質問があります。

ネストされたスクロール ビューを含むスクロール ビューがあります。outer-scrollviewinner-scrollviewを呼び出すだけです。outer-scrollview は水平スクロールビューで、inner-scrollviews は垂直スクロールビューです。

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    _outerScrollView = [[UIScrollView alloc] initWithFrame:self.view.bounds];
    _outerScrollView.pagingEnabled = YES;
    _outerScrollView.contentSize = CGSizeMake(_outerScrollView.frame.size.width * 3, _outerScrollView.frame.size.height);
    [self.view addSubview:_outerScrollView];

    for(int i=0; i<3; i++) {

        UIScrollView *innerScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(i * _outerScrollView.frame.size.width,
                                                                                             0,
                                                                                             _outerScrollView.frame.size.width,
                                                                                             _outerScrollView.frame.size.height)];
        [_outerScrollView addSubview:innerScrollView];


        UIView *contentView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, innerScrollView.frame.size.width, innerScrollView.frame.size.height * 2.0)];
        contentView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"imagefile"]];
        [innerScrollView addSubview:contentView];

        innerScrollView.contentSize = contentView.frame.size;

    }
}

基本的に、同時にスクロールするスクロール ビューは 1 つだけです。

leftまたはrightにスクロールすると、outer-scrollviewがスクロールされます。

topまたはbottomにスクロールすると、inner-scrollviewがスクロールされ、

そして、斜めにスクロールすると、両方のいずれかがスクロールされます。スクロールの方向に依存します。

ここに画像の説明を入力

角度が 0 ~ 45 度の場合、内側のスクロール ビューがスクロールされます。角度が 45 ~ 90 度の場合、outer-scrollviewがスクロールされます。

ANGLEを変更することはできますか?

例えば、角度が30度なのに横スクロールしたい。

ありがとうございました!

どんな助けでも大歓迎です:)

4

1 に答える 1

2

この種のネストされた scrollview アクションを実現する簡単な方法が必要な場合は、内側のビューの水平スクロールを無効にし、外側のビューの垂直スクロールを無効にするだけです。ただし、それで探している結果が得られない場合は、多くのカスタム コーディングを行う必要があります。

まず、UIScrollView の独自のサブクラスを開始する必要があります。これらの関数を上書きすることから始めます。

touchesBegan:
touchesMoved:
touchesEnded:
touchesCancelled:

そしてまた

touchesShouldBegin:

そこから、ドラッグの角度を決定し、それに応じてスクロールビューにメッセージを送信するために独自の計算を行う必要があります。おそらくsuper、上記の関数の 1 つ以上を呼び出す必要があります。独自のスクロールビューをゼロから作成することも検討できます。サブクラスのサブビューとして UIView を単純に作成できます。

于 2013-03-27T06:35:37.593 に答える