UIScrollView の左/右スクロールに制限を設定する最良の方法は何ですか? これは簡単だと思っていましたが、私の試みはすべて失敗しました。
したがって、明確にするために、アプリの使用中に必要なときにいつでもスクロール範囲をプログラムで制限できるソリューションが必要です。これは、ほとんどの場合、表示されているデータの変更に対応しています。
ありがとう、
ダグ
UIScrollView の左/右スクロールに制限を設定する最良の方法は何ですか? これは簡単だと思っていましたが、私の試みはすべて失敗しました。
したがって、明確にするために、アプリの使用中に必要なときにいつでもスクロール範囲をプログラムで制限できるソリューションが必要です。これは、ほとんどの場合、表示されているデータの変更に対応しています。
ありがとう、
ダグ
スクロール ビューの 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;
}
次のコードを使用して、スクロール ビューのコンテンツ サイズを変更するだけです。
[scrollView setContentSize:CGSizeMake(width, height)];
オーバーロードされた layoutSubviews メソッドにパン制約を配置するアプローチを採用しました。
擬似コード:
Calculate criteria for constraining pan
if (pan-constraint-is-met) {
Calculate pan-limit
[self setContentOffset:limitedContentOffset];
}