1

UITableViewはスクロール可能なを持っています。ユーザーUITableViewが一定量スクロールしてから指を離すと、上にスクロールして戻るのではなく、上から 50 ポイントスクロールして、画面の上端と一番上の間に 50 ポイントのギャップを効果的に残します。細胞。

現時点では を実装scrollViewDidEndDraggingしていますが、ビューがスクロールして戻る場所を設定する方法がわかりません。

以下を試してみましたが、思い通りに動作しません。

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
    // If scrolled over 100 points
    if(-100 > (double)self.tableView.contentOffset.y) {
        [self.tableView setContentOffset:CGPointMake(0, -50) animated:YES];
    }
}

上記のコードは、両方のアニメーションが同時に実行されているように、奇妙なちらつきを引き起こしますが、よくわかりません。

どんな助けでも大歓迎です。

より多くの情報で更新

この投稿に基づいて「プルダウンして更新」機能を実装しています: https://stackoverflow.com/a/6392145/120615

UIViewの上部にエクストラを追加しました。UITableViewをスクロールするUITableViewと、UIViewが下に移動して表示されます。画面から指を離すと、UITableViewスクロールして一番上に戻り、新しくUIView追加したものが非表示になります。

私がしたいは、指を離すとUITableViewスクロールが上に戻りますが、上から 100 ポイント停止し (アクティビティ インジケーターをユーザーに表示できるようにするため)、2/3 秒後に完全に上にスクロールすることです

4

1 に答える 1

2

スクロールビューには減速機能があるため、アニメーションは同時に実行されています。

DidEndDraging コールバック関数を使用する代わりに、次の関数を試してください。

  • (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView

これは、ユーザーがトリガーしたアニメーションが完了したときにのみ呼び出されます。

于 2012-05-19T22:54:37.390 に答える