8

UIScrollView の左/右スクロールに制限を設定する最良の方法は何ですか? これは簡単だと思っていましたが、私の試みはすべて失敗しました。

したがって、明確にするために、アプリの使用中に必要なときにいつでもスクロール範囲をプログラムで制限できるソリューションが必要です。これは、ほとんどの場合、表示されているデータの変更に対応しています。

ありがとう、
ダグ

4

3 に答える 3

11

スクロール ビューの contentSize プロパティを使用して、コンテンツのサイズを制御できます。これでは不十分な場合 (コンテンツの途中の任意の領域にスクロール領域を制限する必要がある場合など)、スクロール ビューのデリゲート メソッドで contentOffset を強制的に制限することができます。

基本的にコードは次のようになります。

- (void) scrollViewDidScroll:(UIScrollView*)scroll{
    CGPoint offset = scroll.contentOffset;

    // Check if current offset is within limit and adjust if it is not
    if (offset.x < minOffsetX) offset.x = minOffsetX;
    if (offset.y < minOffsetY) offset.y = minOffsetY;
    if (offset.x > maxOffsetX) offset.x = maxOffsetX;
    if (offset.y > maxOffsetY) offset.y = maxOffsetY;

    // Set offset to adjusted value
    scroll.contentOffset = offset;
}
于 2012-06-05T22:51:52.057 に答える
7

次のコードを使用して、スクロール ビューのコンテンツ サイズを変更するだけです。

[scrollView setContentSize:CGSizeMake(width, height)];

于 2012-06-05T22:39:53.653 に答える
-5

オーバーロードされた layoutSubviews メソッドにパン制約を配置するアプローチを採用しました。

擬似コード:

Calculate criteria for constraining pan
if (pan-constraint-is-met) {

    Calculate pan-limit
    [self setContentOffset:limitedContentOffset];

}
于 2012-06-07T14:14:43.323 に答える