次のデリゲート メソッド内でスクロールの contentOffset を変更しようとしています。
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
次の両方を試しました。
[UIView animateWithDuration:.2 animations:^ {
[scrollView setContentOffset:CGPointZero animated:NO];
}];
と
[UIView animateWithDuration:.2 animations:^ {
CGRect svBounds = self.bounds;
svBounds.origin.y = 0;
self.bounds = svBounds;
}];
問題は、これによりオフセットがすぐに変更されますが (アニメーションの完了後にログで証明されています)、表示されるスクロール位置が変更されないことです。これは、境界が実際にまったく変更されていないことを示す、スクロール ビューの後続のデリゲート メソッドによってさらに証明されます。y 位置が 0 ではないことを意味します。
この特定のデリゲート メソッドでコンテンツ オフセットを変更することは禁止されていますか? その場合、いつオフセットを変更できますか? ユーザーがドラッグを終了すると(一定量の後)、表示されているスクロール領域を一番上に戻すアニメーションを実行しようとしています。
ありがとう!